我正在从xml中加载一些关于城市兴趣点的信息,我的xml结构如下所示:
<InterestPoint>
<id>2</id>
<name>Residencia PAC</name>
<images>
<image>C:\Pictures\Alien Places in The World\20090625-alien11.jpg</image>
<image>C:\Alien Places in The World\20090625-alien13.jpg</image>
</images>
<desc>blah blah blah blah</desc>
<Latitude>40.286458</Latitude>
<Longitude>-7.511921</Longitude>
</InterestPoint>
我无法检索图像信息,我只能获得一张图片,但在这些例子中有两张图片。我正在使用的Linq查询是:
CityPins = (from c in PointofInterest.Descendants("InterestPoint")
select new InterestPoint
{
// = c.Attribute("Latitude").Value,
//longitude = c.Attribute("Longitude").Value,
Name = c.Element("nome").Value,
LatLong = new VELatLong(double.Parse(c.Element("Latitude").Value), double.Parse(c.Element("Longitude").Value)),
Desc = c.Element("descricao").Value,
Images = (from img in c.Descendants("imagens")
select new POIimage
{
image = new Uri(img.Element("imagem").Value),
}).ToList<POIimage>(),
}).ToList<InterestPoint>();
图像是List<POIimages>
,其中POIimage是具有Uri字段的类。
有人可以帮我修复此查询吗?
答案 0 :(得分:2)
通过撰写c.Descendants("images")
,您将遍历所有<images>
元素,并通过调用<image>
获取其第一个img.Element("imagem")
元素。
由于只有一个<images>
(恰好包含多个<image>
元素),因此您只能获得一张图片。
<image>
内的其他<images>
元素会被忽略,因为您不会对它们执行任何操作。
您需要在内部查询中调用c.Descendants("image")
以获取所有<image>
元素。
例如:
Images = (from img in c.Descendants("image")
select new POIimage { image = new Uri(img.Value) }
).ToList(),
答案 1 :(得分:1)
试试这个(无法测试,现在没有VS编辑器。)
...
Images = (from img in c.Descendants("image")).SelectMany( new POIimage
{
image = new Uri(img.Element("imagem").Value)
}).ToList<POIimage>(),