我在xml中获得了Webservice Reponse。
<Items>
<Item>
<SmallImage>
<Url>http://xxx<url>
<height></height>
<weight></weight>
</SmallImage>
<LargeImage>
<Url>http://xxx<url>
<height></height>
<weight></weight>
</LargeImage>
<ItemAttributes>
<Binding>Apparel</Binding>
<Brand>Calvin Klein Jeans</Brand>
<Department>mens</Department>
<Title>Calvin Klein Jeans Men's Rusted Antique Skinny Jean</Title>
</ItemAttributes>
<SimilarProducts>
<SimilarProduct>
<ASIN>B0018QK10E</ASIN>
<Title>New Balance Men's M574 Sneaker</Title>
</SimilarProduct>
</SimilarProducts>
</Item>
</Items>
在这里,我只需要显示标题。 项 - &GT;本期特价货品&GT; ItemAttributes-&GT;名称
我试过这样。
#region Product Title
var Title = xd.Descendants(ns + "Item").Select(b => new
{
PTitle = b.Element(ns + "ItemAttributes").Element(ns + "Title").Value
}).ToList();
#endregion
但它返回Object null。请告诉我你需要更多信息。 提前谢谢。
答案 0 :(得分:0)
您需要正确的xml命名空间名称才能在LINQ查询中搜索Element。
您可以获取xmlnamespace:
XNamespace ns = xd.Root.Attribute("xmlns").Value;
并在LINQ查询中使用ns。
或尝试,
var Items = xd.Descendants().Where(a => a.Name.LocalName == "Item");
var ItemAttributes = Items.Descendants().Where(b => b.Name.LocalName == "ItemAttributes");
List<string> Titles = ItemAttributes.Descendants().Where(c => c.Name.LocalName == "Title").Select(o => o.Value).ToList<string>();
答案 1 :(得分:0)
解决方案:
var Title = xd.Descendants(ns + "Items").Elements(ns + "Item").Select(BTitle => BTitle.Elements(ns + "ItemAttributes").Select(BTitle1 => (string)BTitle1.Element(ns + "Title")).FirstOrDefault() ?? "Null").ToList();