gpt4 book ai didi

php - 如何从 XML 文件中的 HTML 内容中删除命名空间

转载 作者:行者123 更新时间:2023-12-03 16:55:00 26 4
gpt4 key购买 nike

我通过 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:”前缀?

谢谢你。

最佳答案

我不精通 PHP 或 simpleXML,但由于没有其他人回答,我会尝试一下。 (我确实很了解 XML 和 XPath。)
<a:content> 的 children 输入中的元素是 XHTML 元素。大多数浏览器都可以识别 XHTML。它是 XHTML namespace 中的一个 XML 词汇表,在其他方面非常接近 HTML。

所以我认为你不需要删除任何命名空间。而是选择 <a:content> 的子级, 使用

$xml->xpath('//a:content/node()')

并输出每一个。 (听起来您需要对每一个进行序列化,而不仅仅是回显它们的值。)

请注意,为了使上述 XPath 表达式起作用,您首先需要注册 a命名空间前缀(见 registerXPathNamespace 和那里的例子)。

希望这能让你走得更远。如果您还有其他问题,请告诉我。

关于php - 如何从 XML 文件中的 HTML 内容中删除命名空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13866436/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com