Как выбрать XML-узел на основе его содержимого? - PullRequest
16 голосов
/ 27 августа 2008

Как я могу использовать XPath для выбора XML-узла на основе его содержимого?

Если я, например, у меня есть следующий xml, и я хочу выбрать -узел, содержащий Ричи, чтобы получить полное имя автора:

<books>
    <book isbn='0131103628'>
        <title>The C Programming Language</title>
        <authors>
            <author>Ritchie, Dennis M.</author>
            <author>Kernighan, Brian W.</author>
        </authors>
    </book>
    <book isbn='1590593898'>
        <title>Joel on Software</title>
        <authors>
            <author>Spolsky, Joel</author>
        </authors>
    </book>
</books>

Ответы [ 3 ]

23 голосов
/ 27 августа 2008
/books/book/authors/author[contains(., 'Ritchie')]

или

//author[contains(., 'Ritchie')]
4 голосов
/ 27 августа 2008
//author[contains(text(), 'Ritchie')]
4 голосов
/ 27 августа 2008

XPath для этого:

/books/book/authors/author[contains(., 'Ritchie')]

В C # следующий код будет возвращать «Ritchie, Dennis M.»:

xmlDoc.SelectSingleNode("/books/book/authors/author[contains(., 'Ritchie')]").InnerText;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...