2011-05-13 210 views
3

我創建xml文件如下,任何人都可以幫助如何使用PHP?創建xml文件

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"; 
      } 

回答

2

你不是 得到你想要的結果,因爲你將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"); 
?> 
+1

是的,它正是我想要的。但如果我想在創建xml文件後回顯「id」值,那麼在加載xml文件後應該做什麼修改 – rick 2011-05-13 03:39:36

+0

@rick:您可以在末尾添加'echo $ product-> getAttribute('id');'行我的示例代碼來回顯'id'。 – Asaph 2011-05-13 03:42:32

+0

我已經給出了上面的'檢索XML數據'的例子,我可以用我的例子中的這條線......對不起,我是xml的新手 – rick 2011-05-13 03:50:37

0

如果id是成爲一個屬性,那麼你需要使用DOMElement::setAttribute()方法。我認爲這將起作用 - ccording to the documentation,如果一個屬性不存在,它將被創建。

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

然後協議書的$product->appendChild($id);