-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"),
            };

これにより、Header、From、To、および Message の 4 つのプロパティを持つ匿名オブジェクトのリストが得られます。

于 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 に答える