0

私の XML 応答:

<Items>
<Item>
<ASIN>1212121</ASin>
 <ItemAttributes>
  <Title>aaaa</Title>
  </ItemAttributes>
  <Variations>
   <Item>
    <ItemAttributes>
     <color>Red</color>
     </ItemAttributes>
     </Item>
     Item>
    <ItemAttributes>
     <color>yellow</color>
     </ItemAttributes>
     </Item>
       Item>
    <ItemAttributes>
     <color>pink</color>
     </ItemAttributes>
     </Item>
      </Variations>
    </Item>
  <Item>
   ASIN>1211111</ASin>
 <ItemAttributes>
  <Title>bbb</Title>
  </ItemAttributes>
  <Variations>
   <Item>
    <ItemAttributes>
     <color>Green</color>
     </ItemAttributes>
     </Item>
      </Variations>
  </Item>
  </Items>

ここでは、ページごとに 10 個のアイテムを受け取りました。各アイテムの色を取得するために、今必要なのはすべてです。次のコードを使用しました。

   var Color = xd.Descendants(ns + "Items").Elements(ns+"Item").Elements(ns + "Variations").Elements(ns + "Item").Elements(ns + "ItemAttributes").Elements(ns + "Color").Select(cl => new
        {
            clr = cl.Value
        }).ToList();

この Xml は、すべてのアイテムの色を返します。最初は赤です。2番目は緑です。項目 10 まであります。上記の LINQ コードは、すべてのアイテムの色を返します。Red、yellow.pink、green として返されます。ただし、最初のアイテム (赤) の色を個別に表示する必要があります。

最後に、アイテムを表示する必要があります->アイテム->バリエーション->アイテム->アイテム属性->色出力:最初のアイテムの場合、赤、黄、ピンク、2番目のアイテムの場合、緑、..

4

2 に答える 2

1

で試してみてください、

   var Color = xd.Descendants(ns + "Items").Elements(ns + "Item").Select(o => string.Join(",", o.Elements(ns + "Variations")
            .Elements(ns + "Item")
            .Elements(ns + "ItemAttributes")
            .Elements(ns + "Color")
            .Select(x => x.Value).ToArray())).ToList<string>();
于 2012-09-13T07:55:33.617 に答える
1

何が必要かはまだ100%明確ではありませんが、次のようなものだと思います:

foreach (var item in xd.Descendants(ns + "Items").Elements(ns + "Item"))
{
    // Do anything you need on a per-item basis here
    Console.WriteLine("Got item: {0}", item.Element("ASIN").Value);
    var colors = item.Elements(ns + "Variations")
                     .Elements(ns + "Item")
                     .Elements(ns + "ItemAttributes")
                     .Elements(ns + "Color")
                     .Select(x => x.Value);
    foreach (var color in colors)
    {
        Console.WriteLine("  Color: {0}", color);
    }
}
于 2012-09-13T05:26:52.390 に答える