将基于兄弟值的节点与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']