C# Linq to XML 查询

发布于 2025-01-07 07:48:47 字数 654 浏览 0 评论 0原文

<World>
  <Animals>
    <Tab>
      <Dogs id ="1">
        <Dog1></Dog1>
        <Dog2></Dog2>
        <Dog3></Dog3>
      </Dogs>
      <Dogs id ="2"></Dogs>
      <Dogs id ="3"></Dogs>
    </Tab>
  </Animals>
</World>

如何获取 id == 1 标签下的所有元素?

我的 Linq 查询。 (不起作用)为什么?

XDocument xml= XDocument.Load(xml.xml);
var elements = from e in xml.Descendants("Animals").Descendants("Tab").Elements("Dogs")
where e.Attribute("id").toString().Equals("1")
select c;

您能检查一下吗?

谢谢!

<World>
  <Animals>
    <Tab>
      <Dogs id ="1">
        <Dog1></Dog1>
        <Dog2></Dog2>
        <Dog3></Dog3>
      </Dogs>
      <Dogs id ="2"></Dogs>
      <Dogs id ="3"></Dogs>
    </Tab>
  </Animals>
</World>

How do I get all elements under tag where id == 1?

My Linq query. (doesn't work) why?

XDocument xml= XDocument.Load(xml.xml);
var elements = from e in xml.Descendants("Animals").Descendants("Tab").Elements("Dogs")
where e.Attribute("id").toString().Equals("1")
select c;

Could you check it please?

Thanks!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

少年亿悲伤 2025-01-14 07:48:47
var result = xdoc.Descendants("World")
                 .Descendants("Animals")
                 .Descendants("Tab")
                 .Elements("Dogs")
                 .Where(n => n.Attribute("id").Value == "1");

输出:

<Dogs id="1">
  <Dog1></Dog1>
  <Dog2></Dog2>
  <Dog3></Dog3>
</Dogs>
var result = xdoc.Descendants("World")
                 .Descendants("Animals")
                 .Descendants("Tab")
                 .Elements("Dogs")
                 .Where(n => n.Attribute("id").Value == "1");

Output:

<Dogs id="1">
  <Dog1></Dog1>
  <Dog2></Dog2>
  <Dog3></Dog3>
</Dogs>
别在捏我脸啦 2025-01-14 07:48:47

或者使用 XPath:

xml.XPathSelectElements("/World/Animals/Tab/Dogs[@id=1]")

xml.XPathSelectElements("//Dogs[@id=1]")

它将找到所有出现的狗。

Or use XPath:

xml.XPathSelectElements("/World/Animals/Tab/Dogs[@id=1]")

or

xml.XPathSelectElements("//Dogs[@id=1]")

which would find all Dogs wherever they occurred.

待天淡蓝洁白时 2025-01-14 07:48:47

从您的示例数据来看,我认为您想要

//from e in xml.Descendants("Animals").Descendants("Tab").Elements("Dogs")
from e in xml.Descendants("Animals").Elements("Tab").Descendants("Dogs")

在同一行中,如果您想强制执行该结构,Descendants("Animals") 可以是Elements("Animals")

对于其余的,您的查询看起来不错。

From your sample data I think you want

//from e in xml.Descendants("Animals").Descendants("Tab").Elements("Dogs")
from e in xml.Descendants("Animals").Elements("Tab").Descendants("Dogs")

And in the same line, Descendants("Animals") could be Elements("Animals") if you want to enforce the structure.

For the rest your query looks OK.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文