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

StackOverflow https://stackoverflow.com/questions/30018

  •  09-06-2019
  •  | 
  •  

Вопрос

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

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

<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>
Это было полезно?

Решение

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

или

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

Другие советы

XPath для этого:

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

В C# следующий код вернет «Ричи, Деннис М.»:

xmlDoc.SelectSingleNode("/books/book/authors/author[contains(., 'Ritchie')]").InnerText;
//author[contains(text(), 'Ritchie')]
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top