¿Cómo selecciono un nodo XML en función de su contenido?
Pregunta
¿Cómo puedo usar XPath para seleccionar un nodo XML según su contenido?
Si yo, por ejemplo.tengo el siguiente xml y quiero seleccionar el nodo <autor> que contiene a Ritchie para obtener el nombre completo del autor:
<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>
Solución
/books/book/authors/author[contains(., 'Ritchie')]
o
//author[contains(., 'Ritchie')]
Otros consejos
El XPath para esto es:
/books/book/authors/author[contains(., 'Ritchie')]
En C#, el siguiente código devolvería "Ritchie, Dennis M.":
xmlDoc.SelectSingleNode("/books/book/authors/author[contains(., 'Ritchie')]").InnerText;
//author[contains(text(), 'Ritchie')]
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow