【发布时间】:2014-05-28 12:09:31
【问题描述】:
XML::LibXML::Node::find 和相关方法是否保证节点列表将始终按照 XML 文档中的顺序排列?
这对我来说很重要,因为我的文档对应于一个大数组,我希望能够在某些情况下删除其中的一系列项目,并且我必须确保这样的事情始终如一地工作:
my @nodes = $dom->find('//MyElement[@attr=something]/descendant::Token/@id')
->get_nodelist;
for my $token ( reverse map { $_->value } @nodes ) {
splice @my_big_array, $token, 1;
}
困难在于这在XML::LibXML中没有记录,我不知道这是否取决于libxml2的实现,whose documentation我不太明白,还是取决于DOM standard或其他一些W3C 标准,显然不是为了让我凡人阅读而编写的。
【问题讨论】:
-
简短回答:是的。这几乎是如此明显的要求,这是不言而喻的。但是鉴于 XPath 是有序的,任何实现 XPath 的模块也必须遵循该要求。所以是的
XML::Twig,XML::LibXML。并且出于不同的原因,但即使是XML::Simple。
标签: xml perl dom xpath libxml2