我通过API接收XML文件并使用PHP / SimpleXML / XPath进行解析。
我需要从包含HTML的一个字段中获取数据并将其输出,但是HTML都带有“h:”命名空间的前缀。
示例XML:
<xmlfeed>
<title>Title Here</title>
<a:content xmlns:a="http://www.w3.org/2005/Atom" xmlns:h="http://www.w3.org/1999/xhtml">
<h:table xmlns:h="http://www.w3.org/1999/xhtml" width="1360" height="259" cellspacing="0" cellpadding="0" border="0">
<h:tbody><h:tr><h:td width="35%" colspan="3"></h:td></h:tr></h:tbody>
</h:table>
<h:h3 xmlns:h="http://www.w3.org/1999/xhtml">Test heading here</h:h3>
<h:a href="link.php">Link Here</h:a>
</a:content>
</xmlfeed>
如何解析a:content中的所有HTML以从每个元素和名称空间中删除“h:”前缀?
谢谢。
答案 0 :(得分:0)
我不熟悉PHP或simpleXML,但由于没有其他人回答过,我会对它进行一次尝试。 (我确实熟悉XML和XPath。)
输入中<a:content>
元素的子元素是XHTML元素。大多数浏览器都会识别XHTML。它是XHTML命名空间中的XML词汇表,与HTML非常接近。
因此我认为您不需要删除任何名称空间。而是使用
选择<a:content>
的子项
$xml->xpath('//a:content/node()')
并输出每一个。 (听起来你需要序列化每一个,而不仅仅是回应它们的价值。)
请注意,为了使上述XPath表达式起作用,首先需要注册a
名称空间前缀(请参阅registerXPathNamespace及其中的示例)。
希望这会让你走得更远。如果您还有其他问题,请与我们联系。