我正在阅读一个如下所示的 XML 文件:
<?xml version="1.0" encoding="utf-8"?>
<VehicleList>
<Vehicle>
<Item>
<Name>F-150</Name>
<Maker>Ford</Maker>
<Color>Black</Color>
<Price>30000</Price>
</Item>
<ItemSpecific>
<NameValueList>
<Name>Mileage</Name>
<Value>56000</Value>
</NameValueList>
<NameValueList>
<Name>Year</Name>
<Value>2003</Value>
</NameValueList>
</ItemSpecific>
</Vehicle>
<!-- more Vehicle nodes here -->
</Vehicles>
这是从 eBay Web 服务返回的示例数据,所以不要在结构上折磨我。
无论如何,我正在使用这样的代码来读取 xml 并将所有车辆放在 List(of Vehicle) 对象中,如下所示:
Dim vehicles = From v in doc...<Vehicle> _
Let mile = (From x In v.<ItemSpecific>.<NameValueList> Where x.<Name>.Value = "Mileage" Select x.<Value>.Value).Single _
Let year = (From z In v.<ItemSpecific>.<NameValueList> Where z.<Name>.Value = "Year" Select z.<Value>.Value).Single _
Select New Vehicle With {.Name = v.<Item>.<Name>.Value, .Maker = v.<Item>.<Maker>.Value, .Color = v.<Item>.<Color>.Value, .Mileage = mile, .Year = year}
然后将结果绑定到呈现数据List(Of Vehicle)
的 ASP.NET控件。如果所有需要的节点都存在,ListView
一切顺利。例如,里程节点是有条件的,有时不存在。每当节点不存在时,我都会收到“ ”错误。Sequence contains no elements
我已经尝试了我所知道的一切来让事情正常工作。有没有办法测试 XElement 是否存在?