将属性值选择到列表<字符串>中

发布于 2024-10-23 18:51:41 字数 1100 浏览 4 评论 0原文

给定以下 XML,我需要能够获取 Household_Services 类别中的用户名称。

<?xml version="1.0" encoding="utf-8" ?>
<root>
  <category id="Household_Services">
    <users>
      <add name="ESB"/>
      <add name="BordGais"/>
      <add name="Eircom"/>
    </users>
  </category>
  <category id="Financial_Accounts">
    <users>
      <add name="BankOfIreland"/>
      <add name="AIB"/>
    </users>
  </category>
  <category id="Health_Records">
    <users>
      <add name="VHI"/>
      <add name="IrishLife"/>
    </users>
  </category>
</root>

我能得到的最接近的是

string category = "Household_Services";

var users = from n in xe.Elements("category")
            where (string)n.Attribute("id") == category
            select n.Element("users").Elements("add").Attributes("name");

This 给了我一个 IEnumerable 但我需要的是一个 List

我需要改变什么想法吗?

谢谢,

大卫

Given the following XML, I need to be able to get the name of the users in the Household_Services category.

<?xml version="1.0" encoding="utf-8" ?>
<root>
  <category id="Household_Services">
    <users>
      <add name="ESB"/>
      <add name="BordGais"/>
      <add name="Eircom"/>
    </users>
  </category>
  <category id="Financial_Accounts">
    <users>
      <add name="BankOfIreland"/>
      <add name="AIB"/>
    </users>
  </category>
  <category id="Health_Records">
    <users>
      <add name="VHI"/>
      <add name="IrishLife"/>
    </users>
  </category>
</root>

The closest I can get is

string category = "Household_Services";

var users = from n in xe.Elements("category")
            where (string)n.Attribute("id") == category
            select n.Element("users").Elements("add").Attributes("name");

This gives me an IEnumerable<XAttribute> but what I need is a List<string>.

Any ideas what I need to change?

Thanks,

David

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

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

发布评论

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

评论(2

蓝眼睛不忧郁 2024-10-30 18:51:41

将此行更改

select n.Element("users").Elements("add").Attributes("name");

select n.Element("users").Elements("add").Attributes("name").Select(a => a.ToString()).ToList();

change this line

select n.Element("users").Elements("add").Attributes("name");

to

select n.Element("users").Elements("add").Attributes("name").Select(a => a.ToString()).ToList();
小猫一只 2024-10-30 18:51:41

您必须访问 XAttribute 的 Value 属性。

要么

var attributes = from n in xe.Elements("category")
        where (string)n.Attribute("id") == category
        from attribute in n.Element("users").Elements("add").Attributes("name")
        select attribute.Value
var users = attributes.Select(x => x.Value);

要么

var users = from n in xe.Elements("category")
        where (string)n.Attribute("id") == category
        from attribute in n.Element("users").Elements("add").Attributes("name")
        select attribute.Value

会成功。

You have to access the Value Property of your XAttribute.

either

var attributes = from n in xe.Elements("category")
        where (string)n.Attribute("id") == category
        from attribute in n.Element("users").Elements("add").Attributes("name")
        select attribute.Value
var users = attributes.Select(x => x.Value);

or

var users = from n in xe.Elements("category")
        where (string)n.Attribute("id") == category
        from attribute in n.Element("users").Elements("add").Attributes("name")
        select attribute.Value

would to the trick.

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