.net - 如何将 XPath 与 XElement 或 LINQ 一起使用?

标签 .net xml xpath linq-to-xml xelement

考虑以下 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;

但这行不通。是否可以向 XElement 提供 XPath 查询?我可以用旧的 System.Xml 来做框架,做类似的事情:

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

LINQ 命名空间中是否有类似的东西?


更新:

在反复研究之后,我找到了一种方法来做我想做的事情:

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

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

最佳答案

要将 XPath 与 LINQ to XML 一起使用,请为 System.Xml.XPath 添加一个 using 声明,这将带来 System.Xml.XPath.Extensions 的扩展方法。进入范围。

在你的例子中:

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

关于.net - 如何将 XPath 与 XElement 或 LINQ 一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3642829/

相关文章:

google-chrome - Chrome 是否使用 XPath 2.0?

html - xpath 通过包含值的父属性排除元素及其所有子元素

c# - 从 URL 读取响应的最简单方法

c# - 让 .net 远程支持 IP v4 和 v6 : how to get a stream mapped to a real ip, 不仅仅是一个参数异常

c# - Silverlight 中的对象深拷贝

java - 从 doPost HttpServletRequest 读取 xml 时出错

c# - 将 SqlConnectionStringBuilder 用于 EF 连接字符串会引发异常

java - 无法通过 JAVA 运行 XSLT,并且输出中观察到结果为空

c# - 尝试从 DataGridView 计算 xml 值

html - Perl XPath到表单输入字段的值