Условие XPath 1.0: выберите a, если b имеет значение true - PullRequest
0 голосов
/ 10 декабря 2018

У меня есть этот простой XML-файл:

<?xml version="1.0" encoding="UTF-8"?>
<json encoding="UTF-8" has-bom="false" html-processing-enabled="true" replaceEntities="true" version="1.0">
    <map>
        <element isString="1" text="key">GREETING_ID</element>
        <element isString="1" text="value">hello</element>
        <element isString="1" text="comment">this is a greeting</element>
        <element isString="0" text="maxLength">5</element>
        <element isString="0" text="needsTranslation">true</element>
    </map>
    <map>
        <element isString="1" text="key">FAREWELL_ID</element>
        <element isString="1" text="value">bye</element>
        <element isString="1" text="comment">this is a farewell</element>
        <element isString="0" text="maxLength">10</element>
        <element isString="0" text="needsTranslation">false</element>
    </map>
</json>

Я бы хотел выбрать узел Элемент с атрибутом text = "value", но только если в том же элементе узла Map с атрибутом text = "needsTranslation" естьтекст, равный «истине».Я только начал свое путешествие с XPath и не знаю, с чего начать.

1 Ответ

0 голосов
/ 10 декабря 2018

Вы можете попробовать что-то подобное (я проверил это с вашим XML, и он возвращает hello):

//map[element[@text="needsTranslation" and text()="true"]]/element[@text="value"]

Этот //map[element[@text="needsTranslation" and text()="true"]] выберите

Элемент узла карты с атрибутом text = "needsTranslation" имеет текст, равный значению "true"

, а затем /element[@text="value"] выберите значение

Элемент элемента с атрибутом text = "value"

...