Подтвердить что ты не робот

Как выбрать XML-node на основе его содержимого?

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

Если я, например, имеют следующий xml, и я хочу выбрать <author> - node, который содержит Ritchie, чтобы получить полное имя автора:

<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>
4b9b3361

Ответ 1

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

или

//author[contains(., 'Ritchie')]

Ответ 2

XPath для этого:

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

В С# следующий код вернет "Ritchie, Dennis M.":

xmlDoc.SelectSingleNode("/books/book/authors/author[contains(., 'Ritchie')]").InnerText;

Ответ 3

//author[contains(text(), 'Ritchie')]