通过 linq 从 xml 检索数据时出现问题

发布于 2024-09-29 08:45:55 字数 824 浏览 8 评论 0原文

我有 xml,我想获取一些数据

XDocument loaded = XDocument.Load(@"c:\TERC.xml");


        var query = (from c in loaded.Descendants("catalog")
                 from r in c.Descendants("row")
                 select (string)r.Element("Name"));

,这会返回 null 集合,

我该如何修复它?

这是这个 xml:

<?xml version="1.0" encoding="UTF-8" ?> 
 <teryt>
 <catalog name="Compix">
 <row>
    <col name="NAME">Name1</col> 
    <col name="ID">12</col> 
    </row>
 <row>
    <col name="NAME">Name2</col> 
    <col name="ID">13</col> 
    </row>
 <row>
    <col name="NAME">Name3</col> 
    <col name="ID">14</col> 
    </row>  
</catalog>
</teryt>

I have xml from I want get some data

XDocument loaded = XDocument.Load(@"c:\TERC.xml");


        var query = (from c in loaded.Descendants("catalog")
                 from r in c.Descendants("row")
                 select (string)r.Element("Name"));

this returns me collection of null

How can I fix it ?

Here is this xml:

<?xml version="1.0" encoding="UTF-8" ?> 
 <teryt>
 <catalog name="Compix">
 <row>
    <col name="NAME">Name1</col> 
    <col name="ID">12</col> 
    </row>
 <row>
    <col name="NAME">Name2</col> 
    <col name="ID">13</col> 
    </row>
 <row>
    <col name="NAME">Name3</col> 
    <col name="ID">14</col> 
    </row>  
</catalog>
</teryt>

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

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

发布评论

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

评论(3

那支青花 2024-10-06 08:45:55
List<string> query = (from c in loaded.Descendants("catalog")
                      from r in c.Descendants("row")
                      from col in r.Descendants("col").Where(col1 => 
                         col1.Attribute(XName.Get("name")).Value == "NAME")
                      select col.Value).ToList();

执行上述语句后,query 包含以下字符串:

  • Name1
  • Name2
  • Name3
List<string> query = (from c in loaded.Descendants("catalog")
                      from r in c.Descendants("row")
                      from col in r.Descendants("col").Where(col1 => 
                         col1.Attribute(XName.Get("name")).Value == "NAME")
                      select col.Value).ToList();

After executing statement above, query contains the following strings:

  • Name1
  • Name2
  • Name3
还不是爱你 2024-10-06 08:45:55

您可能想尝试这个:

var query = (from c in loaded.Descendants("catalog")
                     from r in c.Descendants("row")
                     select (string)r.Value);

我假设您想获取“col”节点内的数据。否则,请明确您要检索的内容。

希望这有帮助。

You may want to try this:

var query = (from c in loaded.Descendants("catalog")
                     from r in c.Descendants("row")
                     select (string)r.Value);

I assume that you want to get the data inside the "col" node. Otherwise, please precise what you want to retrieve.

Hope this helps.

べ映画 2024-10-06 08:45:55

Name 是 col 元素上的一个属性,您需要其值,但查询中缺少该部分。

        var query = (from c in loaded.Descendants("catalog")
                     from r in c.Descendants("row")
                     from col in r.Descendants("col")
                     select (string)r.Value).ToList<string>();

Name is an attribute on the col element of which you want the value, that part was missing in the query.

        var query = (from c in loaded.Descendants("catalog")
                     from r in c.Descendants("row")
                     from col in r.Descendants("col")
                     select (string)r.Value).ToList<string>();
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文