содержит функцию в Xpath

Я использую Java для обработки Xpath для своего проекта. У меня и XMl похож на этот ''

<Tag1>
   <Tag2>
       <Name>ABC\Test</Name>
       <value>10</value>
   </Tag2>
   <Tag2>
       <Name>ABC\Test\test1</Name>
       <value>112</value>
   </Tag2>  
<Tag1>

'' 'Мое требование - написать Xpath, который работает для всех похожих xml, чтобы получить "Value", где name - Test. В приведенном выше примере ABC в ABC \ test может быть любым (т.е. в одном наборе xml это будет abc в другом xyz), поэтому нельзя использовать строгое сравнение, например:

//Tag2[Name[text()="text"]/value/text()

Это не удастся, так как точного соответствия нам не будет. Я также пробовал использовать функцию contains, например:

//Tag2[contains(Name,"test")]/value/text()

Этот случай работает, но он возвращает оба значения node.

Есть ли другая функция, с помощью которой я могу этого добиться. Любая помощь будет принята с благодарностью.


person Anuj Priyadarshi    schedule 29.01.2020    source источник
comment
Невозможно воспроизвести проблему; Я получаю 112 на выходе со вторым выражением (с contains().   -  person Jack Fleeting    schedule 29.01.2020


Ответы (1)


(1) Входной XML имеет неправильный формат. Я исправил это.

(2) XML чувствителен к регистру, поэтому поиск строки «test» не найдет «Test».

XML

<Tag1>
    <Tag2>
        <Name>ABC\Test</Name>
        <value>10</value>
    </Tag2>
    <Tag2>
        <Name>ABC\Test\test1</Name>
        <value>112</value>
    </Tag2>
</Tag1>

XPath

/Tag1/Tag2[contains(Name,"test")]/value/text()
person Yitzhak Khabinsky    schedule 29.01.2020