我在 Perl 中使用 LibXML,它存储每个节点的起始行号,但我如何才能获得最后一个?
我尝试通过..获取最后一行号
- ..counting 节点的innerhtml 中的换行符,但LibXML 以与原始格式不同的格式返回innerhtml,因此行号不同。
- ..node->getLastChild->line_number,但也没有成功。
任何想法?
如果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();
但是,虽然这是它为非元素节点返回的内容,但它返回元素的开始标记(而不是整个元素)的最后行号。那是完全没用的。
对不起,没办法!
如果 line_number 如您所说返回节点的第一行,那么您只需要
my $parser = XML::LibXML->new( XML_LIBXML_LINENUMBERS==>1);
my $e_line_num = $node->line_number();
=> 1);