содержит функцию в Xpath - PullRequest
0 голосов
/ 29 января 2020

Я использую 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, чтобы получить «Значение», где name - Test. В приведенном выше примере AB C в ABC \ test может быть любым (то есть в одном наборе xml это будет ab c в другом xyz), поэтому нельзя использовать строгое сравнение, например:

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

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

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

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

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

1 Ответ

1 голос
/ 29 января 2020

(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()
...