我正在尝试从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节点中提取整个字符串。
非常感谢。
答案 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>';