perl - 使用 XML::LibXML 在 Perl 中提取 XML 标签内容

标签 perl xml-parsing xml-libxml

我有以下 XML 文件:

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet href="CoreNLP-to-HTML.xsl" type="text/xsl"?>
<root>
  <document>
    <sentences>
      <sentence id="1">
        <basic-dependencies>
          <dep type="nn">
            <governor idx="2">Planted</governor>
            <dependent idx="1">Europeans</dependent>
          </dep>
        </basic-dependencies>
      </sentence>
    </sentences>
  </document>
</root>

我可以使用下面给出的代码提取内容“Europeans”。有什么方法可以使用 XML::LibXML 从标签中提取“nn”吗?

use strict;
use warnings;
use XML::LibXML qw( );
my $output = $filename.'.xml';
my $parser = XML::LibXML->new();
my $doc = $parser->parse_file($output);
for my $dependency_node ($doc->findnodes('//document/sentences/sentence/basic-dependencies'))
{
    for my $dependent_node ($dependency_node->findnodes('dep'))
    {
            my $word = $dependent_node->findvalue('dependent/text()');
            print "$word\n";
    }
}

最佳答案

是的,只需将分配更改为

my $word = $dependent_node->findvalue('@type');

XPath 中的属性以 @ 符号开头。

关于perl - 使用 XML::LibXML 在 Perl 中提取 XML 标签内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16590614/

相关文章:

css - perl XML::LibXML 不是选择器

linux - 针对 XSD 进行验证时 perl libXML 崩溃

c - 嵌入式系统的libxml交叉编译

perl - 在 Perl 中,如何调用名称在字符串中的方法?

perl - 我如何告诉 CPAN 测试人员如何为我的测试设置环境?

perl - 在 perl 中获取当前语言环境名称

python - 从xml文件中检索数据到mysql数据库

java - XMLReader 搜索相对于主应用程序的 DTD 文件而不是 XML 文件

perl -\& 和 $expr->() 的用法是什么

python - 从xml文档中提取元素属性和值而不在python中指定元素