gpt4 book ai didi

php - 使用 phpQuery 选择特殊的 XML 标签

转载 作者:可可西里 更新时间:2023-10-31 22:49:32 25 4
gpt4 key购买 nike

phpQuery是一个非常好的工具,它在过去对我解析格式良好的 XHTML 和 XML 文档提供了极大帮助,但我最近遇到了一个问题,试图选择标记名中有冒号的元素,例如:

<isc:thumb><![CDATA[http://example.com/foo_thumb.jpg]]></isc:thumb>

我尝试使用 pq() 函数来选择所有这些元素:

foreach ( pq("isc:thumb") as $thumbnail ) {
print pq( $thumbnail )->text();
}

不幸的是,这什么都不做。如果我尝试另一个元素,例如 id 的标记名,结果会按预期弹出。

最佳答案

您正在尝试查找属于 isc 命名空间的 thumb 元素(参见 XML namespace );不是名为 isc:thumb 的标签。

phpQuery 可以愉快地查询命名空间元素,只是不像您正在尝试做的那样。相反,只需以 namespace|tagname(即 isc|thumb)的形式提供标签。还值得注意的是,命名空间必须注册到 phpQuery 的 XPath 处理程序(它只是一个 DOMXPath 对象)才能识别命名空间。

这是一个简单的 XML 文档示例(显然,使用您自己的 XML 并确保提供正确的命名空间 URI)。

phpQuery::newDocumentXML('<root xmlns:isc="urn.example.isc">
<isc:thumb><![CDATA[http://example.com/foo_thumb.jpg]]></isc:thumb>
<isc:thumb><![CDATA[http://example.com/bar_thumb.jpg]]></isc:thumb>
</root>
');
phpQuery::getDocument()->xpath->registerNamespace('isc', 'urn.example.isc');
foreach ( pq("isc|thumb") as $thumbnail ) {
echo pq( $thumbnail )->text() . PHP_EOL;
}

哪些输出:

http://example.com/foo_thumb.jpg
http://example.com/bar_thumb.jpg

关于php - 使用 phpQuery 选择特殊的 XML 标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2706235/

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