#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;