0

我在 Perl 中使用 LibXML,它存储每个节点的起始行号,但我如何才能获得最后一个?

我尝试通过..获取最后一行号

  • ..counting 节点的innerhtml 中的换行符,但LibXML 以与原始格式不同的格式返回innerhtml,因此行号不同。
  • ..node->getLastChild->line_number,但也没有成功。

任何想法?

4

2 回答 2

0

如果line_number按照您所说的返回节点的第一行,您只需要

my $s_line_num = $node->line_number();
my $e_line_num = $node->nextSibling()->line_number();

但事实并非如此。line_number返回的实际上更接近节点最后一行的编号。为此,我们可以简单地查看前一个兄弟的行号。

my $s_line_num = $node->previousSibling()->line_number();
my $e_line_num = $node->line_number();

但是,虽然这是它为非元素节点返回的内容,但它返回元素的开始标记(而不是整个元素)的最后行号。那是完全没用的。

对不起,没办法!

于 2013-01-19T22:47:43.080 回答
0

如果 line_number 如您所说返回节点的第一行,那么您只需要

my $parser = XML::LibXML->new( XML_LIBXML_LINENUMBERS==>1);


my $e_line_num = $node->line_number();

=> 1);

于 2020-01-18T14:22:38.403 回答