self-schließendes Tag mit DOMDocument

tklustig

Erfahrenes Mitglied
Hallo Leute,
eine simple Frage, auf die ich allerdings keine Antwort weiß, da ich XML Files bisher nie mit PHP erstellen musste:
Wie kreiere ich per PHP Code ein selbst schließendes Tag der Form
Code:
<updatedAt/>
oder
Code:
<foreignKeys/>

Der Code sieht bisher so aus...

PHP:
 public function createXML (array $arElements):object {
        $root = null;
        for( $i = 0;$i < count($arElements);$i++ ){
            $dom = new DOMDocument();
            $dom->encoding = 'utf-8';
            $dom->xmlVersion = '1.0';
            $dom->formatOutput = true;
            $xmlFileName = $this->filename;
            $root = $dom->createElement('root');
            $total = $dom->createElement('total',$arElements['total']);
            $root->appendChild($total);
            $data = $dom->createElement('data');
            $orderNumber = $dom->createElement('orderNumber',$arElements['orderNumber']);
            $orderDateTime = $dom->createElement('orderDateTime',$arElements['orderDateTime']);
            $data->appendChild($orderNumber);
            $data->appendChild($orderDateTime);
                .
                .
                .
 
Das kann so nicht stimmen. Das macht mein geposteter Quellcode durch
Code:
$data = $dom->createElement('data');
genau so, entspricht aber nicht meiner Notation =>
Code:
<data/>
Bitte nur Posts, die Zur Lösung beitragen
 
Das ist aber seltsam?? Bei mir wurde nämlich erst folgende Ausgabe erzeugt:
Code:
<data></data>
Jetzt funktioniert es aber mit Deiner Variante. Vielen Dank für deine Hilfe!
 
Hier nochmals ein Auszug aus dem Code. Vielleicht hilft er ja jemandem....
PHP:
    public function createXML(array $arElements,array $arXMLItemsAdress2BeCreated,$arXMLLineItems2BeCreated,$arStateMachineStateInfo):object {
//
        $dom = new DOMDocument();
        $dom->encoding = 'utf-8';
        $dom->xmlVersion = '1.0';
        $dom->formatOutput = true;
        $root = $dom->createElement('root');
        $total = $dom->createElement('total',$arElements['total']);
        $root->appendChild($total);
        $data = $dom->createElement('data');
        $orderNumber = $dom->createElement('orderNumber',$arElements['orderNumber']);
        $orderDateTime = $dom->createElement('orderDateTime',$arElements['orderDateTime']);
        $data->appendChild($orderNumber);
        $data->appendChild($orderDateTime);
        $price = $dom->createElement('price');
        $netPrice = $dom->createElement('netPrice',$arElements['netPrice']);
        $price->appendChild($netPrice);
        $totalPrice = $dom->createElement('totalPrice',$arElements['netPrice']);
        $price->appendChild($totalPrice);
        $calculatedTaxes = $dom->createElement('calculatedTaxes');
        $tax = $dom->createElement('tax',$arElements['tax']);
        $calculatedTaxes->appendChild($tax);
        $taxRate = $dom->createElement('taxRate',$arElements['taxRate']);
        $calculatedTaxes->appendChild($taxRate);
        $priceElement = $dom->createElement('price',$arElements['price']);
        $calculatedTaxes->appendChild($priceElement);
        $apiAlias1 = $dom->createElement('apiAlias','cart_tax_calculated');
        $calculatedTaxes->appendChild($apiAlias1);
        $taxRules = $dom->createElement('taxRules');
        $taxRateElement = $dom->createElement('taxRate',$arElements['taxRate']);
        $taxRules->appendChild($taxRateElement);
        $percentage = $dom->createElement('percentage',$arElements['percentage']);
        $taxRules->appendChild($percentage);
        $apiAlias2 = $dom->createElement('apiAlias','cart_tax_rule');
        $taxRules->appendChild($apiAlias2);
        $positionPrice = $dom->createElement('positionPrice',$arElements['positionPrice']);
        $taxStatus = $dom->createElement('taxStatus',$arElements['taxStatus']);
        $apiAlias3 = $dom->createElement('apiAlias','cart_price');
        $price->appendChild($calculatedTaxes);
        $price->appendChild($taxRules);
        $price->appendChild($positionPrice);
        $price->appendChild($taxStatus);
        $price->appendChild($apiAlias3);
        $orderCustomer = $dom->createElement('orderCustomer');
        $customerNumber = $dom->createElement('customerNumber',$arElements['customerNumber']);
        $orderCustomer->appendChild($customerNumber);
        $apiAlias4 = $dom->createElement('apiAlias','order_customer');
        $orderCustomer->appendChild($apiAlias4);
        $root->appendChild($total);
        $data->appendChild($price);
        $data->appendChild($orderCustomer);
        //adresses creating by loop
        for( $i = 0;$i < count($arXMLItemsAdress2BeCreated['cities']);$i++ ){
            $addresses = $dom->createElement('addresses');
            $countryId = $dom->createElement('countryId',$arXMLItemsAdress2BeCreated['countryID']);
            $addresses->appendChild($countryId);          
            //self-closing empty tag
            $addresses->appendChild($dom->createElement('countryStateId'));
            $salutationId = $dom->createElement('salutationId',$arXMLItemsAdress2BeCreated['salutationId']);
            $addresses->appendChild($salutationId);
            $firstName = $dom->createElement('firstName',$arXMLItemsAdress2BeCreated['firstName']);
            $addresses->appendChild($firstName);
            $lastName = $dom->createElement('lastName',$arXMLItemsAdress2BeCreated['lastName']);
            $addresses->appendChild($lastName);
            $street = $dom->createElement('street',$arXMLItemsAdress2BeCreated['streets'][$i]);
            $addresses->appendChild($street);
            $zipCode = $dom->createElement('zipcode',$arXMLItemsAdress2BeCreated['zipCodes'][$i]);
            $addresses->appendChild($zipCode);
            $company = $dom->createElement('company',$arXMLItemsAdress2BeCreated['company'][$i]);
            $company->appendChild($zipCode);
            $city = $dom->createElement('city',$arXMLItemsAdress2BeCreated['cities'][$i]);
            $addresses->appendChild($city);
            $data->appendChild($addresses);
        }
        $root->appendChild($data);
        $dom->appendChild($root);
        $dom->save($this->filename);
        return $dom;
    }
 

Anhänge

  • p.jpg
    p.jpg
    75,2 KB · Aufrufe: 8
Zuletzt bearbeitet:
Logischerweise auf den letzten. PHP-Code ohne Kommentar zu posten ist wenig sinnvoll. Und dass jemand genau deinen PHP-Code braucht, ist sehr unwahrscheinlich.
 
Zurück