Как получить значение атрибута XML? - PullRequest
2 голосов
/ 08 сентября 2011

У меня есть XML-файл:

<SourceMessage xmlns="test.test">
  <updated>2011</updated>
  <title type="p1"/>
  <title type="p2"/>
  <title type="p3"/>
  <entry>
  </entry>
</SourceMessage> 

Как я могу использовать LINQ для получения атрибута элемента , то есть "p1", "p2" и "p3"?

Ответы [ 3 ]

1 голос
/ 08 сентября 2011

Используйте XDocument.Load или XDocument.Parse , чтобы загрузить данные XML в XDocument . Затем, используя LINQ, вы можете получить тип для каждого элемента в корневом каталоге документа следующим образом:

XNamespace test = "test.test";

XDocument doc = XDocument.Load(file);
// - or -
XDocument doc = XDocument.Parse("<SourceMessage ...");

IEnumerable<string> query = from title in doc.Root.Elements(test + "title")
                            select (string)title.Attribute("type");

foreach (string item in query)
{
    Console.WriteLine(item);
}

Выход:

p1
p2
p3
0 голосов
/ 08 сентября 2011
XDocument xml = XDocument.Parse (@"<SourceMessage xmlns="test.test">
<updated>2011</updated>
  <title type="p1"/>
  <title type="p2"/>
  <title type="p3"/>
  <entry>
  </entry>
</SourceMessage>");

foreach (var t in xml.Root.Descendants("title"))
    Console.Write(t.Attribute("type").Value);
0 голосов
/ 08 сентября 2011
var xElement XElement.Parse(xmlString);
var result = xElement.Descendants("title")
                     .Select(e => e.Attribute("type").Value);
...