使用PHP / SimpleXML从XML中提取HTML

时间:2017-06-06 13:00:09

标签: php xml simplexml

我正在尝试从XML文件中提取数据(文件格式不受更改)。 XML数据包括HTML标签形式的内容和外观信息,这些都让我感到悲伤。 XML的相关部分如下所示:

<item>
    <p>Some text</p>
    <p> Some more text</p>
    <p><i>This</i> is important text.</p>
</item>

我需要节点的内容,作为字符串(以后插入到数据库中)。文本始终包含在&lt; p>标签,所以我尝试使用以下代码迭代这些:

$namediscussion = '';

foreach($sectionxml->xpath('//p') as $p)
{
     $namediscussion = $namediscussion . $p . '</br>';

}

echo $namediscussion

($ sectionxml是来自父节点的ximplexml_load_string()的输出。)

问题在于,当我回应$ namediscussion时,我得到的是:

Some text 
Some more text 
is important text.

请注意斜体字中缺少的单词。我该如何保存?我更喜欢使用SimpleXML,但如果我必须使用DOM,那也很好。即使是直接字符串操作也可以,但我似乎无法从SimpleXML节点中提取整个字符串。

非常感谢。

1 个答案:

答案 0 :(得分:1)

您正在投射simplexmlelement,这将丢弃元素子元素的内容,如此处所述simplexmlelement::__toString

Does not return text content that is inside this element's children.

要修复缺失的单词,您可以使用simplexmlelement::asXML代替字符串强制转换,如下所示

$namediscussion = $namediscussion . strip_tags($p->asXML()) . '</br>';