Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用C#和LINQ to XML选择XML文件中的属性值_C#_Xml_Linq To Xml - Fatal编程技术网

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

使用C#和LINQ to XML选择XML文件中的属性值,c#,xml,linq-to-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 nu

在这个
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>

20140206-15-04-00
将数字转换为字符串
20/05/1985
1.
一个
查找后续字符
19/05/1985
abc
def
将多个数字转换为字符串
17/05/1985
123
一二三
查找相关键
02/05/1985
a1
b1
计数字符
04/02/1985
这是一个测试
14
另一个测试
09/01/1985
测试输入
10
我尝试了这段代码,但它什么也不返回:

        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();
XDocument xdoc=XDocument.Load(@“C:\Users\ARNAUD\Documents\local\temp.xml”);
列出IDsInDistantXML=xdoc.Root.Elements(“按释放”)
.Select(pr=>(int)pr.Attribute(“id”))
.ToList();

PS:XML文件已正确找到。

请尝试
子体

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

尝试
子体

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

presslease
节点是
pressleases
的子节点,后者是
根节点的子节点

在这种情况下,您需要进行如下更改:

List<int> IDsInDistantXML = xdoc.Root.Element("PressReleases")
                                     .Elements("PressRelease")
                                     .Select(pr => (int)pr.Attribute("id"))
                                     .ToList();
List idsindTantXML=xdoc.Root.Element(“新闻稿”)
.要素(“新闻稿”)
.Select(pr=>(int)pr.Attribute(“id”))
.ToList();

presslease
节点是
pressleases
的子节点,它是
根节点的子节点

在这种情况下,您需要进行如下更改:

List<int> IDsInDistantXML = xdoc.Root.Element("PressReleases")
                                     .Elements("PressRelease")
                                     .Select(pr => (int)pr.Attribute("id"))
                                     .ToList();
List idsindTantXML=xdoc.Root.Element(“新闻稿”)
.要素(“新闻稿”)
.Select(pr=>(int)pr.Attribute(“id”))
.ToList();

/root/pressleases/presslease
我很好奇,(在我编辑之前)是您对原始
XML
内容的实际缩进/格式化吗?我发现它不利于可读性和容易出错
/root/pressleases/presslease
我很好奇,(在我编辑之前)它是您对原始
XML
内容的实际缩进/格式化吗?我发现它不利于可读性和容易出错