programing

형제 값을 기반으로 한 노드와 XPath 일치

easyjava 2023. 9. 11. 22:27
반응형

형제 값을 기반으로 한 노드와 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>

모든 것을 맞추는 방법/records/record/name형제로 있음/records/record/record-type그 가치를 가지고A?

찾았습니다.

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

놀랍게도, 이 오래된 질문에 대한 현재까지의 답변 중 가장 간단한 XPath 솔루션을 제공하는 것은 없습니다.

이 간단한 XPath

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

선택한

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

요망대로

자식을 기준으로 상위 요소를 필터링할 수도 있습니다.

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

언급URL : https://stackoverflow.com/questions/912194/matching-a-node-based-on-a-siblings-value-with-xpath

반응형