简体   繁体   中英

Iterating through XML file with XDocument returns element with no attributes

I'm iterating through all the child elements of this XML file:

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

with this code:

XDocument doc = XDocument.Load("Users.xml");

Console.WriteLine(doc.Descendants("users").Count());

foreach (XElement u in doc.Descendants("users")) {
    Console.WriteLine(u.Attributes().Count());
}

but the output from the WriteLine is 0 , and similarly empty if I try referencing the attributes directly. Counting the descendants returns 1 and when I added inner contents to the single child element, it was able to output those. So I know that it's the correct element, it's simply not accessing the attributes for some reason.

Here is a code to do what you are trying to do. You were not getting results because you were only looking for users elements ( doc.Descendants("users") ). The element that you are looking for is at the next level of the xml. If you debugged your code you would have spotted it.

            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);
            }

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM