2015-12-09 2 views
1

Я перебор всех дочерних элементов этого XML-файл:Перебора XML файла с XDocument возвращает элемент без атрибутов

<?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, и когда я добавил внутреннее содержимое к одному дочернему элементу, он смог их вывести. Поэтому я знаю, что это правильный элемент, по какой-то причине он просто не получает доступа к атрибутам.

+0

Вы пробовали отладить это? Это совершенно очевидно. –

+0

Я не спал некоторое время, и я очень начинаю на C#. Прошу прощения, если это очевидно, но я обдумал это в течение часа безрезультатно. – SemiViral

+0

См. Мой ответ ниже. –

ответ

0

Вот код, который вы пытаетесь сделать. Вы не получали результатов, потому что искали только 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); 
      } 
+0

Я использую System.Xml.Linq' и 'Newtonsoft.Json.Linq', а второй' .Descendant() 'вызывает конфликт двусмысленности. 'Вызов неоднозначен между следующими методами или свойствами: 'Newtonsoft.Json.Linq.Extensions.Descendants (System.Collections.Generic.IEnumerable )' и 'System.Xml.Linq.Extensions.Descendants (System. Collections.Generic.IEnumerable ) '' – SemiViral

+0

Почему вы используете Json.Linq? вам нужны только System.Linq и System.Xml.Linq –

+0

Управление данными из запроса GET в другом месте приложения; который получен в JSON. Этот бит предназначен для хранения пользователей, который я хотел бы сделать в XML для простоты. Я не знал, что эта проблема возникнет. – SemiViral

Смежные вопросы