我需要根据 type 元素以不同的方式处理xml文件。我使用findnodes($xpath,$contextNode)
方法来查找属于一个结构的元素。元素可以有<type>A</type>
和<type>B</type>
两种类型。当我处理类型为B的节点时,有没有办法“跳转”到类型为A的元素以获得ID值?
基本上,我需要能够找出id为2,类型为B的元素与id为1,类型为A的元素在相同的结构中。
<structure>
<element>
<def>
<id>1</id>
<type>A</type>
</def>
</element>
<element>
<def>
<id>2</id>
<type>B</type>
</def>
</element>
</structure>
1条答案
按热度按时间hgncfbus1#
您可以使用
parent
轴。[1]第一次世界大战
XPath提供了方便的
..
快捷方式。[1]第一次世界大战
或者,您可以使用
preceding-sibling
和following-sibling
轴的组合。[1]第一次世界大战
在XPath之外,
$node->parentNode
将获得父节点。由于OP提到了findnodes
,并且因为它更简洁,所以这个答案集中在XPath上。1.我认为这支持XPath 2,而libxml2(由XML::LibXML使用)只支持XPath 1,但是这些路径应该对两者都有效。