c# - 用于选择 XML 结构深处的元素的 LINQ 语句

标签 c# .net linq linq-to-xml

我的 XML 看起来像这样:

<?xml version="1.0" encoding="utf-8"?>
     <University>
          <Colleges>
            <College>
              <Id> Cambridge </Id>
              <Dept>
                <Id> Arts</Id>
              </Dept>
            </College>
            <College>
              <Id> Oxford</Id>
              <Dept>
                <Id> Philosophy </Id>
              </Dept>
            </College>
          </Colleges>
        </University>

我想根据ID返回学院。在另一种情况下,我只想写学院的 Id。

我不明白如何写LINQ语句来直接读取Id。我可以在每个阶段使用 Descendants()。但是如何选择XML结构深处的元素呢?

最佳答案

也许您应该使用 XPath。语法将比纯 Linq 查询更简单:

using  System.Xml;
using  System.Xml.XPath;
...

public foo()
{
    XElement yourNode = XElement.Parse(yourstring);
    XElement college = root.XPathSelectElement("//College[Id='Oxford']");
}

如果您可以在结构中的多个位置拥有 College 节点,XPAth 查询 /University/Colleges/College[Id='OxFord'] 将避免冲突问题。

关于c# - 用于选择 XML 结构深处的元素的 LINQ 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11429703/

相关文章:

c# - 隐藏 app.config

c# - 等待BackgroundWorker完成?

c# - 使用带有 Regex 的 Linq 删除空匹配项

c# - 如何手动创建嵌套的 POST 参数? (例如,我正在 .Net 中创建请求以联系 Rails 后端)

c# - 从委托(delegate)转换为函数

c# - 使用 IP 地址连接到 SQL Server 的多个连接

.net - 如何使 IEnumerable<string>.Contains 不区分大小写?

c# - SSIS - 该进程无法访问该文件,因为它正被另一个进程使用

c# - 数据未写入MYSQL数据库

c# - 如何将 DataTable 行移动到其 DataTable 的第一个位置