Как прочитать информацию заголовка XML с помощью Linq to XML

#c# #xml #linq #linq-to-xml #xelement

#c# #xml #linq #linq-to-xml #xelement

Вопрос:

Я пытаюсь выяснить, как использовать Linq to XML для чтения XML-файла в моей программе на C #. Вот пример для моего вопроса:

 <node name="services" class="tridium.containers.ServiceContainer" module="coreRuntime" release="2.301.532.v1">
  

Как мне получить доступ к имени, классу, модулю и информации о выпуске в этой строке? Я попробовал .element («узел»).Имя для поля name, но это просто возвращает «узел». Все учебные пособия, которые я могу найти, либо слишком упрощены, чтобы справиться с этим, либо имеют дело с написанием XML-файла. Пожалуйста, помогите.

Комментарии:

1. Смотрите msdn.microsoft.com/en-us/library/bb387086.aspx или msdn.microsoft.com/en-us/library/bb387070.aspx Обратите внимание, что XElement.Name возвращает имя элемента , а не атрибута name .

Ответ №1:

Вы можете использовать это :

 XElement rootelement = XElement.Load(@"path_to_your_file") ;

var name = rootElement.Attribute("name").Value ; 
var classname = rootElement.Attribute("class").Value ; 
var module = rootElement.Attribute("module").Value ; 
  

Комментарии:

1. Я не уверен, почему кто-то отклонил это. Это именно то, что я искал. Спасибо. (теперь я вижу, что вы случайно поставили «XmlElement») Не знаю, почему этот придурок проголосовал против вместо простого редактирования. Я приму этот ответ. Спасибо.

2. Да, не было вызова для понижения правильного ответа, но 5 секунд чтения документации по классу XElement могли бы избавить вас от 10 минут ожидания ответа в stackoverflow.

3. Я не голосовал против, но это, вероятно, потому, что это ответ только для кода; большинство людей предпочитают какое-то дополнительное объяснение или, возможно, ссылки на дополнительную информацию в ответах.

Ответ №2:

Если он находится в корне, то

 XDocument xdoc = XDocument.Load("data.xml");

var name= xdoc.Root.Attribute("name").Value;
var class= xdoc.Root.Attribute("class").Value;
var module= xdoc.Root.Attribute("module").Value;