-3

我有一个 xDocument 对象,它是通过一个包含以下给定数据的 xml 文件加载的。

<note>
   <header>This is xml2linq -- Part1.</header>
   <from>From me</from>
   <to>to stackoverflow</to>
   <message>ohh wow</message>
</note>
<note>
   <header>This is xml2linq -- Part2 .</header>
   <to>to stackoverflow</to>
   <message>ohh wow</message>
</note>
<note>
   <header>This is xml2linq -- Part3 .</header>
   <from>From me</from>
   <to>to stackoverflow</to>
</note>
<description>
  <item1>ohh nice</item1>
</description>
<description>
   <language>c-sharp</language>
   <item1>Inheritance</item1>
<description>

我想在 xDocument 上编写 linq 查询并获得以下给定的输出

 note(header,from,to,message)
 description(item1,language)

** 描述。我想要不同的节点名称列表,后面跟着 Note 节点。但我不想写一个长的 foreach 或 for 循环。但我想在 xDocument 对象上编写一个简单的 linq 查询。

帮我得到这个输出......

4

2 回答 2

0
var doc = XDocument.Parse(" -- your XML here -- ");
var notes = from note in doc.Elements("note")
            select new {
                Header = (string)note.Element("header"),
                From = (string)note.Element("from"),
                To = (string)note.Element("to"),
                Message = (string)note.Element("message"),
            };

这将为您提供具有 4 个属性的匿名对象列表:Header、From、To 和 Message。

于 2012-05-28T16:10:19.973 回答
0

没有硬编码header,from,to,..等。

XDocument xDoc = XDocument.Load(....);

List< List<KeyValuePair<string,string>> > list =
    xDoc.Descendants("note")
    .Select(note => note.Elements()
                        .Select(e => new KeyValuePair<string, string>(e.Name.LocalName, e.Value))
                        .ToList())
    .ToList();
于 2012-05-28T16:33:44.157 回答