【问题标题】:How can i get all subnode values separately from XML Response using LINQ to XML?如何使用 LINQ to XML 从 XML 响应中分别获取所有子节点值?
【发布时间】:2012-09-06 03:35:46
【问题描述】:

我的 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>

在这里,我每页收到十个项目。我现在只需要获取每个项目的颜色。 我使用了以下代码。

   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 返回所有 Item 的颜色。首先它是红色的。 第二个是绿色的。它上升到第 10 项。 现在我上面的 LINQ 代码为所有项目返回颜色。它返回为红色、黄色、粉红色、绿色.. 但我必须分别显示第一项(红色)的颜色。

最后, 我必须显示项目->项目->变化->项目->项目属性->颜色 输出:对于第一个项目。,红色,黄色,粉红色 对于第二项,绿色,..

【问题讨论】:

  • 哪个项?您没有向我们提供有关您要做什么的足够信息。
  • 那是亚马逊的回应。,是服装。,
  • 不,我认为你错过了我的意思。你写过:“我怎样才能得到单个项目的关联颜色”——不知道你有什么来代表那个项目,我们不可能回答这个问题。

标签: c# xml linq linq-to-xml


【解决方案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>();

【讨论】:

    【解决方案2】:

    仍然不是 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);
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-01
      • 2013-04-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多