Получить результаты от 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 места.