DomDocument-> saveXml没有根节点

时间:2014-02-28 13:35:26

标签: php simplexml domdocument

是否可以在没有根节点的情况下获取xml字符串形式DomDocumentSimpleXmlDomDocument->saveXml()返回此信息:

<root>
    <item>text</item>
    <item>text</item>
</root>

我需要:

<item>text</item>
<item>text</item>

我可以使用DomDocument获取此信息吗?没有正则表达式有没有办法做到这一点?

1 个答案:

答案 0 :(得分:1)

&#34;内部XML&#34;就像&#34;内部HTML&#34; innerHTML属性,在Javascript和其他语言中使用...我想我们可以忽略需要一些解释的@michi评论。关于@CBroe评论:如果你想象DOMDocumentFragment,或者从innerXML到另一个(例如过滤的)XML的字符串XML替换,则没有意义。您的好例子(item列表)是一个字符串XML,也可以转换为DOMNodeList


获取所有XML的最快捷最简单的方法是使用saveXML(),它返回一个包含您想要的字符串的字符串。

有两种方法可以切断您不需要的零件(一种&#34; trim 标签&#34;):

按DOM

遍历所有$node->childNodes的循环,将每个子节点连接saveXML($subnode)

通过正则表达式

也许更简单快速,但不安全,比如

$innerXML = preg_replace(
    '#^\s*<([a-z0-9_:]+)[^>]*>(.+?)</\\1>\s*$#s', 
    '$2', 
    $dom->saveXML($node)
);