Dot-Net

如何將 XPath 與 XElement 或 LINQ 一起使用?

  • September 4, 2010

考慮以下 XML:

<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;

但這行不通。是否可以向 提供 XPath 查詢XElement?我可以使用較舊的System.Xml框架來做到這一點,例如:

xml.Node("/response/data/hash").Value

LINQ 命名空間中有類似的東西嗎?


更新:

在胡思亂想之後,我找到了一種方法來做我想做的事情:

var hash = xml.Descendants("hash").FirstOrDefault().Value;

我仍然有興趣看看是否有人有更好的解決方案?

要將 XPath 與 LINQ to XML 結合使用,請添加 using 聲明 for System.Xml.XPath,這會將 的擴展方法System.Xml.XPath.Extensions納入範圍。

在您的範例中:

var value = (string)xml.XPathEvaluate("/response/data/hash");

引用自:https://stackoverflow.com/questions/3642829