2013-05-16 64 views
2

我有下面的XML文件:提取XML标签内容::的libxml

<?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> 

我的内容“欧洲人”使用下面给出的代码中提取。有什么办法可以使用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"; 
    } 
} 

回答

3

是的,只是改变了分配

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

属性中的XPath开始用@符号。

+0

非常感谢!我在这一天浪费了一整天的时间。它现在有效。 – user2154731