获取 SimpleXMLElement 的 XML 内容
Posted
技术标签:
【中文标题】获取 SimpleXMLElement 的 XML 内容【英文标题】:Getting the XML content of a SimpleXMLElement 【发布时间】:2011-05-07 22:07:50 【问题描述】:有没有办法提取 SimpleXMLElement 的“innerhtml”?
例如,我如何使用 SimpleXMLElement 从以下 XML 代码中获取 '<div><h1>Hello World</h1></div>'
:
<xml>
<body1>
<div><h1>Hello World</h1></div>
</body1>
<body2>
<div><h2>Goodby Moon</h2></div>
</body2>
</xml>
我阅读了文档,我想到的只是$xml->body1->asXML();
。
这几乎是正确的解决方案,但它也添加了根标签:
<body1>
<div><h1>Hello World</h1></div>
</body1>
是否可以跳过周围的body1标签?
编辑:
xml 也可能如下所示:
<xml>
<body1>
<div><h1>Hello World</h1></div>
<div><h1>Hello Moon</h1></div>
Some Text
</body1>
<body2>
<div><h2>Goodby Moon</h2></div>
</body2>
</xml>
如:http://codepad.org/8ZuRYZOW
【问题讨论】:
【参考方案1】:如果您确定要查找的是div
:
$xml->body1[0]->div->asXML();
否则
$xml->body1[0]->children()->asXML();
http://codepad.org/QUytim28 否则http://codepad.org/hDt28BL6
【讨论】:
(+1) 感谢您的代码。但是,一旦有多个子元素,它就会失败。 codepad.org/EHepjsZg 这就是您需要在问题中提供更多详细信息的原因;)这是解决方案codepad.org/BCxSzP2m 再次感谢!不幸的是,它仍然无法正常工作。我想出了同样的想法,但是它跳过了纯文本。 (见我编辑的问题) 嗯,这不是一个真正有效的 XML 或 HTML。 SimpleXML 使用有效的 XML 很简单,如果使用更复杂的 XML,您应该使用 DOMDocument,或者使其有效,或者不通过 XML 文件。 嗯,嗯,嗯,实际上,codepad.org/m3z15M1p 它的工作原理感谢php.net/manual/fr/simplexmlelement.asXML.php 这个页面的第一条评论。这很丑陋,但仍然......【参考方案2】:您可能想要children method 或者您想要使用$xml->body1[ 0 ]->asXML();
(数组访问)
【讨论】:
$xml->body1[ 0 ]->asXML();
和$xml->body1->asXML();
有区别吗?
@Ghommey :如果您的 xml 中有超过 1 个 <body1>
,则会出现唯一的区别以上是关于获取 SimpleXMLElement 的 XML 内容的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 SimpleXMLElement 获取 CDATA [重复]
多维数组到多维 SimpleXMLElement(XML 对象)[重复]
php中将SimpleXMLElement Object数组转化为普通数组
如何使用 SimpleXmlElement 编写 CDATA?