使用XML :: LibXML在Perl中提取XML标记内容

时间:2013-05-16 14:47:20

标签: 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";
    }
}

1 个答案:

答案 0 :(得分:3)

是的,只需将作业更改为

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

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