xml - 使用 CSS 选择器解析 Perl XML

标签 xml perl namespaces css-selectors

有人知道可以解析 XML 文档并使我能够通过 CSS 选择器和 namespace 支持选择节点的 Perl 库吗?

背景: 我试图用 perl libxml 包解析带有默认命名空间的文档,但在我从根节点中删除默认命名空间之前它从未返回任何内容。

这是我在该主题上找到的内容: https://mail.gnome.org/archives/xml/2003-April/msg00143.html

所以一个简单的例子就是这样一个文件:

<?xml version="1.0" encoding="utf-8"?>
<root xmlns="http://example.com/ns">
  <message>Hi</message>
</root

XPath //message 使用 perl libxml 不会给我任何结果。我知道该库正在完美地完成它的工作,但我仍然需要解析这些东西,所以我认为基于 CSS 选择器的库可能会更成功。

最佳答案

这应该适用于您可以在 libxml 中使用的任何内容。

use strictures;
use HTML::TreeBuilder::LibXML qw();
BEGIN { HTML::TreeBuilder::LibXML->replace_original; }
use Web::Query qw();

print Web::Query->new_from_html(<<'MARKUP')->find('root > message')->text;
<?xml version="1.0" encoding="utf-8"?>
<root xmlns="http://example.com/ns">
<message>Hi</message>
</root>
MARKUP

1;

关于xml - 使用 CSS 选择器解析 Perl XML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11063871/

相关文章:

php - 正确使用 php 命名空间

javascript - 在对象声明完成之前调用成员方法

java - 从互联网加载架构

xml - 如何使 eclipse 格式化我的 tml 文件,就像我希望的那样?

regex - 数据中意外插入的全词匹配

perl - 您认为 2010 年 Perl 的哪些新功能最有用?

php - 跨多个请求使用 Zend session 命名空间

java - 编码时如何将命名空间属性添加到 JAXB 中的元素?

sql-server - Azure XML 支持

perl - 如何加快perl中的模式识别