2010-08-16 54 views
7

我需要将SimpleXML对象转换为DOMDocument,才能与DOMXPath一起使用。我需要DOMXPath,以便我可以使用它的registerPHPFunctions方法。这可以做到吗?将SimpleXML转换为DOMDocument,而不是DOMElement

With dom_import_simplexml我收到DOMElement而不是DOMDocument

+2

文件听起来像你不再做简单的* * XML操作,所以你可能要考虑完全切换到DOM。 – Gordon 2010-08-16 09:08:48

+1

我是,只是想说服自己这是值得的麻烦。 – Znarkus 2010-08-16 09:22:47

回答

1
$dom=new DOMDocument; 
$dom->loadXML($sxml->asXML()); 
+0

谢谢!注意:'loadXML()'方法返回一个布尔值,并将XML加载到'$ dom'。有了这个解决方案,我将失去与原始简单xml对象的连接,对吧?所以说我稍后删除DOME元素,这不会影响简单的XML。 – Znarkus 2010-08-16 09:26:47

+1

代码已更正。您仍然可以访问$ sxml作为您的simplexml对象。 $ dom和$ sxml是相互独立的。无论您在$ dom中做出什么修改都不会影响$ sxml。如果你想要与上面的代码相反: '$ sxml = simplexml_load_string($ dom-> saveXML());' – stillstanding 2010-08-16 09:33:38

+1

实际上,当我用'dom_import_simplexml'进行转换时,它保留了与简单xml的连接。如果我删除了一个dom节点,这个变化会回到简单的xml。 – Znarkus 2010-08-16 09:41:56

相关问题