Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何获取节点';使用XML::LibXML设置s行号_Xml_Perl_Libxml2 - Fatal编程技术网

如何获取节点';使用XML::LibXML设置s行号

如何获取节点';使用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')) {

我正在尝试处理包含特定元素的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')) {
    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');