2016-05-11 3 views
0

Я интересно, если есть способ сделать следующее с выражением один XPATH: У меня есть XML-документ, похожий на этот, но со многими «результатами»,XPath для возврата значения из XML-документа

<result> 
    <id>1</id> 
    <name>joe</name> 
</result> 
<result> 
    <id>2</id> 
    <name>jim</name> 
</result> 

Я передаю переменную в утилиту C# вместе с xml и хочу вернуть имя, где id = переменная. я мог цикл через XML, пока достичь того, что я после этого, но если есть удобный XPath способ сделать это, я слушаю ... благодаря

+2

Ну, используя LINQ to XML, запрос тривиален ... по какой-либо причине вы особенно хотите использовать XPath? –

+0

Просто, что это в классе помощника для приложения Biztalk, и большинство других методов в классе используют xpath, кроме этого нет причины, кроме, возможно, я хочу практиковать xpath! Спасибо, я проведу LINQ to XML – DarkW1nter

ответ

2

Если у вас есть корневой элемент там, как «результаты», XPath может проверить, и что у вас нет каких-либо других узлов с именем «результат» ...

//result[id=1]/name 

Или вы могли бы получить текст напрямую, вместо этого возвращается в узел

//result[id=1]/name/text() 

И если вы хотите убедиться, что есть только один результат, вы могли бы окружить его круглые скобки и поставить [1] после

(//result[id=1]/name/text())[1] 

Я хотел бы также рекомендовать тестирование с одним из тестов XPath сайтов там как this one, но нужно учитывать, что различные парсеры XPath/XML иногда ведут себя по-другому.

Смежные вопросы