我有一個XML文檔,並希望使用SimpleXML在特定位置插入新節點。使用SimpleXML添加子節點
原始XML是這樣的:
<epp
xmlns="urn:ietf:params:xml:ns:epp-1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="urn:ietf:params:xml:ns:epp-1.0 epp-1.0.xsd"
>
<command>
<create>
<domain:create
xmlns:domain="urn:ietf:params:xml:ns:domain-1.0"
xsi:schemaLocation="urn:ietf:params:xml:ns:domain-1.0 domain-1.0.xsd"
>
<domain:period unit="y"></domain:period>
</domain:create>
</create>
</command>
</epp>
<domain:create>
我需要添加以下節點後:
<domain:ns>
<domain:hostAttr>
<domain:hostName></domain:hostName>
<domain:hostAddr ip="v4"></domain:hostAddr>
</domain:hostAttr>
</domain:ns>
我怎麼能這樣做?我曾經嘗試這樣做:
$xmlObj = simplexml_load_file('myXMLFile.xml');
$nsNode = $xmlObj->command->create->children(self::OBJ_URI_DOMAIN)->create->addChild('domain:ns');
$hostAttr = $nsNode->addChild('domain:hostAttr');
$hostName = $hostAttr->addChild('domain:hostName');
$hostAddr = $hostAttr->addChild('domain:hostAddr');
$hostAddr->addAtribute('ip', 'v4');
在此第一線,我得到這樣的警告:
Warning: SimpleXMLElement::addChild() [simplexmlelement.addchild]: Cannot add child. Parent is not a permanent member of the XML tree
在第二行,也正因爲如此,我越來越:
Fatal error: Call to a member function addChild() on a non-object
在此先感謝。其他說明: - php版本高於5.1; - 我以後在這個相同的XML上成功添加了子節點。
看起來像http://www.sitepoint.com/forums/showthread.php?p=4665410 – Tomalak 2010-08-05 09:34:27
的副本這是我絕望的程度。 :(對不起,我認爲他們是無關的。:s你可以刪除,如果你認爲它更合適。 – MEM 2010-08-05 09:39:55
沒關係,我剛剛在谷歌搜索過程中發現該錯誤消息的帖子,讓我們看看需要多長時間一個解決方案。:) – Tomalak 2010-08-05 09:44:37