Получить результаты от xpathnavigator оценить

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

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

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

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

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

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

Это каким-то образом возможно?

2 ответа

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

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

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

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

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

Это каким-то образом возможно?

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

//Vehicles[car[wheels = 4]]

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

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

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

Другие вопросы по тегам