如何获取节点';使用XML::LibXML设置s行号
我正在尝试处理包含特定元素的XML和报告行。根据上面链接的文档,如何获取节点';使用XML::LibXML设置s行号,xml,perl,libxml2,Xml,Perl,Libxml2,我正在尝试处理包含特定元素的XML和报告行。根据上面链接的文档,行号选项应该可以做到这一点,但我一直得到0。守则: use XML::LibXML; my $parser = XML::LibXML->new({ line_numbers => 1 }); my $xml = $parser->load_xml(location => 'some.xml'); for my $node ($xml->findnodes('//function')) {
行号
选项应该可以做到这一点,但我一直得到0。守则:
use XML::LibXML;
my $parser = XML::LibXML->new({ line_numbers => 1 });
my $xml = $parser->load_xml(location => 'some.xml');
for my $node ($xml->findnodes('//function')) {
warn $node->nodePath,"\n";
warn $node->line_number,"\n";
}
找到节点后,我的输出为
/database/functions/function
0
知道如何使其工作吗?来自文档:
此函数返回在过程中找到标记的行号 解析。如果将节点添加到文档中,则行号为0。 如果将一个文档中的节点传递给另一个文档,则可能会出现问题 一个 如果之前未激活解析器的line_numbers标志 解析时,行_number()将始终返回0
在XML操作过程中是否添加了节点
事实并非如此。更仔细的调查表明,有问题的函数是
load\uxml
。更换为以下部件,即可正常工作:
my $xml = $parser->parse_file('some.xml');
它并没有被操纵,你们可以看到上面的完整片段。只需加载->findnodes->行号。看起来只有
$parser->load\u xml
有问题,而xml::LibXML->load\u xml(location=>$file,行号=>1)
也可以正常工作。看来在load\u xml
中克隆是罪魁祸首。对其他人来说。这就是它对我的作用——我的$dom=XML::LibXML->new({line_numbers=>1})->parse_文件($xmlfilename);
my $xml = $parser->parse_file('some.xml');