可悲的是,我无法控制我收到的XML数据。它是从我无法访问的系统导出的。但是,在收到文件后,我可以根据需要编辑文件。
XML文件大约有90.000行,包含大约900个我需要解析然后导入另一个系统的项目。
我的问题是XML在我解析的元素中包含(有时)HTML数据。当存在HTML数据时,解析返回空。
示例XML数据:
<item>
<title>This is the tile</title>
<description><p>This is a description</p></description>
<comment><p>This is an example</p></comment>
</item>
解析时,我能够获得&#34;标题&#34;内容。但是&#34;描述&#34;由于
标签,内容会返回空结果。
如果我删除了
标签或将其更改为<p>
格式,那么我就能获得所需的结果。
我的问题是,XML数据有时会包含HTML标记(p,a,img,h2等),有时还会包含多个HTML标记和/或子标记。我想把所有内容都集成到一个字符串中。
与上面的XML示例相比,我尝试了以下但没有结果:
$xml = simplexml_load_file("uploaded_file.xml");
$item = $xml->xpath("/rss/channel/item");
foreach($item as $task)
{
$title = $task->title; // Works
$description = $task->description; // Empty
$description = strip_tags($task->description); // Empty
$description = htmlentities($task->description); // Empty
$comment= strip_tags($task->comment); // Works
...
如果我从&#34;描述&#34;中手动删除HTML标记。元素然后我得到正常的结果。但是,在如此大的文件中手动执行此操作并不是一个选项,并且标记并不总是相同。有时b,p,ul,li,a等。
我希望htmlentities()能够将HTML转换为XML支持的格式(即<p>
),但它似乎不起作用。
任何协助都会得到适当的帮助。如果需要,可以提供更多的exmaples。
答案 0 :(得分:1)
终于找到了一个适用于我的解决方案,使用 - &gt; asXML()
$description = strip_tags($task->description->asXML());