Consideremos el siguiente código XML:¿Cómo usar XPath con XElement o LINQ?
<response>
<status_code>200</status_code>
<status_txt>OK</status_txt>
<data>
<url>http://bit.ly/b47LVi</url>
<hash>b47LVi</hash>
<global_hash>9EJa3m</global_hash>
<long_url>http://www.tumblr.com/docs/en/api#api_write</long_url>
<new_hash>0</new_hash>
</data>
</response>
Estoy buscando una manera realmente corto para obtener sólo el valor del elemento <hash>
. Intenté:
var hash = xml.Element("hash").Value;
Pero eso no está funcionando. ¿Es posible proporcionar una consulta XPath a un XElement
? Puedo hacerlo con la mayor System.Xml
marco, haciendo algo como:
xml.Node("/response/data/hash").Value
¿Hay algo como esto en un espacio de nombres LINQ?
ACTUALIZACIÓN:
Después de monerías con este poco más he encontrado una manera de hacer lo que estoy tratando de hacer:
var hash = xml.Descendants("hash").FirstOrDefault().Value;
todavía estaría interesado en ver si Alguien tiene una mejor solución?
No utilice FirstOfDefault() en este caso, porque si no se encuentra "hash", obtendrá una NullReferenceException. Use First() en cambio, obtendrá una excepción más descriptiva. – kaalus
Use First() si espera que siempre exista "hash". De lo contrario, FirstOrDefault() está bien siempre que verifique null antes de acceder a la propiedad Value. –