我一直在努力工作幾個小時,試圖讓輸出XML匹配我給出的規範,而我找不到合適的代碼來完成它。我使用DOMDocument是因爲我讀到它比SimpleXML更靈活。帶命名空間的DOMDocument
所需的最終結果:
<?xml version="1.0" encoding="UTF-8"?>
<retail xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
<partnerid>XYZ</partnerid>
<customer xmlns:a="http://schemas.datacontract.org/2004/07/DealerTrack.DataContracts.CreditApp">
<a:info>
<a:FirstName>Bob</a:FirstName>
<a:LastName>Hoskins</a:LastName>
</a:info>
</customer>
<refnum i:nil="true"/>
</retail>
...和我使用到那裏的代碼(略):
$node = new DOMDocument('1.0', 'UTF-8');
$root = $node->createElementNS('http://www.w3.org/2001/XMLSchema-instance', 'retail');
$root->setAttributeNS('http://www.w3.org/2001/XMLSchema-instance', 'xmlns:i', 'test');
$capp = $node->appendChild($root);
$cnode = $node->createElement("partnerid", 'XYZ');
$capp->appendChild($cnode);
... ...這是不是讓我什麼我想要。我已經嘗試了至少一打createElementNS,setAttributeNS的組合,查看了幾個例子,並且找不到任何讓我接近我之後的東西。我已經可以在SimpleXML中做到這一點,但我想了解在這種情況下發生了什麼以及如何使用DOM。
確定。 PHP不是我的語言,但我建議你簡化。從根元素開始。你把它放到http://www.w3.org/2001/XMLSchema-instance命名空間中,但這不是你想要的。根據你想要的結果,「retail」元素應該沒有名字空間。所以$ root = $ node-> createElement('retail');應該做。然後看看如何添加xmlns:i屬性,依此類推。一次解決一個問題。 – Alohci