Получите результаты оценки xpathnavigator - PullRequest
1 голос
/ 11 ноября 2011

Есть ли способ проверить, почему вызов xPathNavigator.evaluate () не возвращает никаких узлов?

Например, с учетом следующего XML-документа:

<Vehicles>
   <car>
      <wheels>4</wheels>
      <seats>5</seats>
   </car>
</Vehicles>

и следующее выражение xPath:

//Vehicles[((car[wheels = 4 and seats = 2]))]

Я хотел бы получить какое-то указание на то, что узел не был выбран из-за пункта "seat = 2", а не из-за количества колес.

Возможно ли это каким-то образом?

Ответы [ 2 ]

2 голосов
/ 04 апреля 2012

«Почему» - это не тот вопрос, который вы можете автоматизировать. Существует бесчисленное множество причин, по которым выражение XPath не выбирает ни одного узла Что если узлы находятся в неправильном пространстве имен? Что если вы напишите "// Vehicles" вместо "// Vehicles"?

Лучшее, что вы можете сделать, - это определить виды условий, которые вы хотите проверить, и проверить их.

0 голосов
/ 11 ноября 2011

следующее выражение xPath:

//Vehicles[((car[wheels = 4 and seats = 2]))] 

Я хотел бы получить какое-то указание, что узел не был выбран из-за пункта "посадочные места = 2", а не из-за количества колес.

Возможно ли это как-то?

Это было бы возможно, если бы вы использовали следующие выражения:

//Vehicles[car[wheels = 4]]

Здесь, если результат не равен нулю (или пустой коллекции XmlNode), тогда вы будете знать, что если следующее выражение:

//Vehicles[car[wheels = 4][seats = 2]]

выбирает 0 узлов, тогда причина этого в том, что car детей имеют 4 колеса, но ни один из них не имеет ровно 2 места.

...