考虑下面的XML:如何在XElement或LINQ中使用XPath?
<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>
我在寻找一个非常短的方式来获得<hash>
元素的只是价值。我试过了:
var hash = xml.Element("hash").Value;
但是这不起作用。是否可以向XElement
提供XPath查询?我可以与老System.Xml
框架做了,做这样的事情:
xml.Node("/response/data/hash").Value
有没有这样的事情在LINQ命名空间?
UPDATE:
与此胡闹周围多一些我找到了一种方法做我想要做后:
var hash = xml.Descendants("hash").FirstOrDefault().Value;
我还是很想看看任何人有更好的解决方案?
不要使用FirstOfDefault()在这种情况下,因为如果没有找到“散列”,你会得到一个NullReferenceException。使用First()代替,你会得到一个更具描述性的例外。 – kaalus 2012-03-03 00:43:57
如果您希望“散列”始终存在,请使用First()。否则,只要在访问Value属性之前检查null,FirstOrDefault()就没有问题。 – 2016-03-17 20:44:30