使用XDocument遍历XML文件将返回不带属性的元素

本文关键字:属性 元素 返回 XDocument 遍历 XML 文件 使用 | 更新日期: 2023-09-27 18:26:11

我正在遍历这个XML文件的所有子元素:

<?xml version="1.0" encoding="utf-8"?>
<users>
    <user name="SemiViral" access="2" />
</users>

使用此代码:

XDocument doc = XDocument.Load("Users.xml");
Console.WriteLine(doc.Descendants("users").Count());
foreach (XElement u in doc.Descendants("users")) {
    Console.WriteLine(u.Attributes().Count());
}

WriteLine的输出是0,如果我尝试直接引用属性,则类似地为空。计数子元素将返回1,当我将内部内容添加到单个子元素时,它能够输出这些内容。所以我知道这是正确的元素,它只是因为某种原因没有访问属性。

使用XDocument遍历XML文件将返回不带属性的元素

这里有一个代码来执行您正在尝试执行的操作。您没有得到结果,因为您只在查找users元素(doc.Descendants("users"))。您要查找的元素位于xml的下一个级别。如果你调试了你的代码,你就会发现它。

            XDocument doc = XDocument.Load("Users.xml");
            Console.WriteLine(doc.Descendants("users").Descendants().Count());
            foreach (XElement u in doc.Descendants("users").Descendants())
            {
                Console.WriteLine("value of the attribute is " + u.Attributes("access").First().Value);
            }