c# - 使用 C# 和 LINQ to XML 在 XML 文件中选择属性值

标签 c# xml linq-to-xml

在这个 XML 文件中,我想获取所有写在 ID 属性中的 ID

<?xml version="1.0"?>
<root>
  <head>
    <datemaj>20140206-15-04-00</datemaj>
  </head>
  <PressReleases>
    <PressRelease id="545" version="1">
      <Name>Convert number to string</Name>
      <Date>20/05/1985</Date>
      <Input>1</Input>
      <Output>One</Output>
    </PressRelease>
    <PressRelease id="544" version="1">
      <Name>Find succeeding characters</Name>
      <Date>19/05/1985</Date>
      <Input>abc</Input>
      <Output>def</Output>
    </PressRelease>
    <PressRelease id="543" version="1">
      <Name>Convert multiple numbers to strings</Name>
      <Date>17/05/1985</Date>
      <Input>123</Input>
      <Output>One Two Three</Output>
    </PressRelease>
    <PressRelease id="542" version="1">
      <Name>Find correlated key</Name>
      <Date>02/05/1985</Date>
      <Input>a1</Input>
      <Output>b1</Output>
    </PressRelease>
    <PressRelease id="541" version="1">
      <Name>Count characters</Name>
      <Date>04/02/1985</Date>
      <Input>This is a test</Input>
      <Output>14</Output>
    </PressRelease>
    <PressRelease id="540" version="1">
      <Name>Another Test</Name>
      <Date>09/01/1985</Date>
      <Input>Test Input</Input>
      <Output>10</Output>
    </PressRelease>
  </PressReleases>
</root>

我试过这段代码,但它什么也没返回:

        XDocument xdoc = XDocument.Load(@"C:\Users\ARNAUD\Documents\local\temp.xml");
        List<int> IDsInDistantXML = xdoc.Root.Elements("PressRelease")
                            .Select(pr => (int)pr.Attribute("id"))
                            .ToList();

PS:正确找到了 XML 文件。

最佳答案

尝试后代

 List<int> IDsInDistantXML = xdoc.Descendants("PressRelease")
                        .Select(pr => (int)pr.Attribute("id"))
                        .ToList();

问题是你的 PressRelease 元素不是你的 root 元素的直接子元素。所以你什么也得不到,相反你可以使用:

xdoc.Root.Element("PressReleases").Elements("PressRelease")

关于c# - 使用 C# 和 LINQ to XML 在 XML 文件中选择属性值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21735214/

相关文章:

c# - 使用Application.Controller MVC

xml - 如何使用 Jackson XmlMapper 控制编码?

xml - 如何从单个 HL7 文件生成两个 XML 文件并将它们作为单个记录插入到两个不同的列中?

c# - 通过c#解析xml时获取 "\/"等

c# - 查询 parent.attribute 等于 LINQ to XML 中的某个值

javascript - 在 asp.net 中使用 javascript 函数禁用按钮

c# - 操作对于 LINQ to SQL ExecuteCommand 事务的状态无效

c# - 如何验证 XML 文档?

c# - 在 C# 中创建一个 xml 文档并将该文件存储到项目的 bin 文件夹中

c# - 尝试创建多个唯一的短网址