Xpath Expression, чтобы получить количество элементов условно - PullRequest
1 голос
/ 21 марта 2019

У меня есть образец XML ниже

<TravelerIDs AssociationID="1">
        <CustomerID>1</CustomerID>
        <CustomParams>
            <Param Name="AGE">
                <Value xsi:type="xsd:int">4</Value>
            </Param>
            <Param Name="IsKnownTraveler">
                <Value xsi:type="xsd:boolean">false</Value>
            </Param>
        </CustomParams>
    </TravelerIDs>
    <TravelerIDs AssociationID="2">
        <CustomerID>2</CustomerID>
        <CustomParams>
            <Param Name="AGE">
                <Value xsi:type="xsd:int">8</Value>
            </Param>
        </CustomParams>
    </TravelerIDs>
    <TravelerIDs AssociationID="3">
        <CustomerID>3</CustomerID>
        <CustomParams>
            <Param Name="AGE">
                <Value xsi:type="xsd:int">8</Value>
            </Param>
        </CustomParams>
    </TravelerIDs>

Я пытаюсь получить количество TravelerID, в которых есть элемент Param с именем = AGE и значением больше 5 и меньше 14

Ответы [ 2 ]

2 голосов
/ 21 марта 2019

Это должно работать:

//TravelerIDs[CustomParams//Param[@Name='AGE' and Value >= 8 and Value <= 14]]

А если вам нужен счет:

count(//TravelerIDs[CustomParams//Param[@Name='AGE' and Value >= 8 and Value <= 14]])
0 голосов
/ 21 марта 2019

Всякий раз, когда вы знаете, что схема вашего документа не изменится, лучше не использовать нисходящую ось из-за возможного снижения производительности. Используйте вместо

count(
   /TravelerIDs
      /CustomParams
         /Param[@Name="AGE"]
            /Value[. > 5][. < 14]
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...