我的XML
<?xml version="1.0" encoding="utf-8"?>
<metadata created="2014-05-15T12:26:07.701Z" xmlns="http://site/cu-2.0#" xmlns:ext="http://site/cu/b-2.0">
<customer-list count="47" offset="0">
<customer id="7123456" type="Cust" ext:mark="1">
<name>Tony Watt</name>
<sort-name>Watt, Tony</sort-name>
<gender>male</gender>
<country>US</country>
<knownAs-list>
<knownAs locale="ko" sort-name="Tony Watt"</knownAs>
<knownAs locale="ja" sort-name="Watt Tony"</knownAs>
</knownAs-list>
<tag-list>
<begin>Country</begin>
<tag count="1">
<name>usa</name>
</tag-list>
</customer>
<customer id="9876543" type="Cust" ext:mark="2">
....
</customer-list>
所以我有一些获取所有数据的代码。我进一步走了一步,使用匿名类型并将值添加到类中,如下所示
Dim c = From cust As XElement In XDoc.Descendants(ns + "customer")
Select New Customer() With {.Name = cust.Element(ns + "name"),
.Surname = CStr(cust.Element(ns + "surname")),
.Id = cust.Attribute("id"),
.Tag = CStr(cust.Element("tag-list").Element("begin"))}
上面的代码从XML返回数据,但是添加了这一行代码
.Tag = CStr(cust.Element("tag-list").Element("begin"))
引发异常,“对象引用未设置为对象的实例”。现在这里有两种可能性
阅读MSDN之后,似乎使用.Descendants(Xdoc.Descendants)将从所有元素中获取所有数据,其中Elements会将数据返回到我声明的路径,据我所知,数据“应该”可用于以上代码。谁能协助我从标签列表中获取开始数据?
XML名称空间声明丢失。使用
.Tag = CStr(cust.Element(ns + "tag-list").Element(ns + "begin"))
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句