создание xml-файла

Я создаю xml-файл, как показано ниже, может ли кто-нибудь помочь, как получить это с помощью php?

Файл xml:

<products> <product id="123" /> </products> 

Файл Php:

Я использую следующий код, но не получаю результат, как указано выше

 $xml = new DomDocument('1.0', 'utf-8'); $xml->formatOutput = true; $products= $xml->createElement('products'); $product = $xml->createElement('product'); $id = $xml->createElement('id'); $xml->appendChild($products); $products->appendChild($product); $product->appendChild($id); $id->nodeValue = 123; $xml->save("data.xml"); 

получение данных xml:

  $xml = new DomDocument(); $xmlFile = "data.xml"; $xml= DOMDocument::load($xmlFile); $product = $xml->getElementsByTagName("product"); foreach($product as $node) { $address = $node->getElementsByAttributeName("address"); $address = $address->item(0)->nodeValue; echo"$address"; } 

Вы не получаете желаемых результатов, потому что добавляете id как тег, а не атрибут. Я немного переработал ваш код и сделал id атрибутом. Я проверил код ниже, и он дает желаемый результат.

 <?php $xml = new DomDocument('1.0', 'utf-8'); $xml->formatOutput = true; $products= $xml->createElement('products'); $product = $xml->createElement('product'); $xml->appendChild($products); $products->appendChild($product); $product->appendChild(new DomAttr('id', '123')); $xml->save("data.xml"); ?> 

Если id должен быть атрибутом, вам необходимо использовать метод DOMElement::setAttribute() . Я думаю, что это сработает – согласно документации , если атрибут еще не существует, он будет создан.

 $product->setAttribute("id", "123"); 

Затем loas $product->appendChild( $id );