将基于兄弟值的节点与XPath匹配

拥有这样的XML文档:

<?xml version="1.0" encoding="UTF-8"?> <records type="array"> <record> <name>svn</name> <record-type>A</record-type> <ttl type="integer">86400</ttl> <zone-id type="integer">69075</zone-id> <aux type="integer">0</aux> <id type="integer">xxx</id> <active>Y</active> <data>xxx.xxx.xxx.xxx</data> </record> <record> <name>domain.tld.</name> <record-type>NS</record-type> <ttl type="integer">86400</ttl> <zone-id type="integer">xxx</zone-id> <aux type="integer">0</aux> <id type="integer">xxx</id> <active>Y</active> <data>domain.tld.</data> </record> <record> <name>blog</name> <record-type>A</record-type> <ttl type="integer">86400</ttl> <zone-id type="integer">xxx</zone-id> <aux type="integer">0</aux> <id type="integer">xxx</id> <active>Y</active> <data>xxx.xxx.xxx.xxx</data> </record> </records> 

如何匹配所有具有同值/logging/logging/loggingtypes的/logging/logging/ 名称与值“A”?

find了:

 /records/record/name[../record-type/text() = "A"] 

您也可以通过子元素过滤父元素:

/records/record[record-type[text()='A']]/name

令人惊讶的是,迄今为止这个老问题的答案都没有提供最简单的 XPath解决scheme。

这个简单的XPath

 /records/record[record-type = "A"]/name 

select

 <name>svn</name> <name>blog</name> 

按照要求。

 /records/record[record-type='A']