请考虑以下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添加一个使用声明,这将把System.Xml.XPath.Extensions的扩展方法纳入范围.

在您的示例中:

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

.net相关问答推荐

EF核心类似功能T-SQL UPDATE FROM

无法在Ubuntu 22.04.3上运行带有Rider 2023和DotNet-8.0的项目

EGC / 文本元素上的 .NET String.Split

如何在 MSBuild 脚本中获取当前目录?

.Include() 与 .Load() 在 EntityFramework 中的性能

将客户端证书添加到 .NET Core HttpClient

LINQ:确定两个序列是否包含完全相同的元素

每第 N 个字符/数字拆分一个字符串/数字?

使用 C# 清除文本文件的内容

RNGCryptoServiceProvider 的优缺点

什么是 project.lock.json?

Mono 是树莓派

.net 自定义配置如何不区分大小写解析枚举 ConfigurationProperty

向 .NET 应用程序添加脚本功能

寻找 .NET 的命令行参数解析器

System.Speech.Recognition 和 Microsoft.Speech.Recognition 有什么区别?

WebClient.DownloadString 由于编码问题导致字符损坏,但浏览器正常

在 C# 中使用 Bitmap 对象查找图像格式

任何人都知道缺少枚举通用约束的好方法吗?

Roslyn 编译代码失败