PHP SimpleXML获取innerXML

我需要获取以下XML内容的HTML内容answer:


<qa>

 <question>Who are you?</question>

 <answer>Who who, <strong>who who</strong>, <em>me</em></answer>

</qa>

因此,我想获取字符串“谁,<strong>谁</ strong>,<em>我</ em>”。


如果我使用answeras SimpleXMLElement,则可以调用asXML()以获取“ <answer>谁,<strong>谁</ strong>,<em>我</ em> </ answer>”,但是如何获取内部XML没有元素本身包裹的元素的元素?


我更喜欢不涉及字符串函数的方法,但是如果那是唯一的方法,那就这样吧。


开心每一天1111
浏览 376回答 3
3回答

慕丝7291255

最直接的解决方案是使用简单XML实现自定义get innerXML:function simplexml_innerXML($node){&nbsp; &nbsp; $content="";&nbsp; &nbsp; foreach($node->children() as $child)&nbsp; &nbsp; &nbsp; &nbsp; $content .= $child->asXml();&nbsp; &nbsp; return $content;}在您的代码中,替换$body_content = $el->asXml();为$body_content = simplexml_innerXML($el);但是,您也可以切换到另一个API,该API区分innerXML(您正在寻找的内容)和externalXML(您现在获得的内容)。Microsoft Dom libary提供了这种区别,但是不幸的是PHP DOM却没有。我发现PHP XMLReader API提供了这种区别。请参见readInnerXML()。尽管此API在处理XML方面有完全不同的方法。尝试一下。最后,我要强调的是XML并不是要提取数据作为子树,而是提取数据。这就是为什么您在寻找正确的API时遇到麻烦的原因。将HTML子树存储为一个值(并转义所有标签)而不是XML子树会更“标准”。还要注意,某些HTML合成器并不总是XML兼容的(即vs)。无论如何,在实践中,您的方法对于编辑xml文件绝对更方便。
打开App,查看更多内容
随时随地看视频慕课网APP