Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb.net 将嵌套元素Linq获取为XML_Vb.net_Linq_Linq To Xml - Fatal编程技术网

Vb.net 将嵌套元素Linq获取为XML

Vb.net 将嵌套元素Linq获取为XML,vb.net,linq,linq-to-xml,Vb.net,Linq,Linq To Xml,我的XML 上面的代码从XML返回数据,但添加了这行代码 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 + "su

我的XML

上面的代码从XML返回数据,但添加了这行代码

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"))}
引发异常,“对象引用未设置为对象的实例”。现在这里有两种可能性

  • 该行的代码有误(从“标记列表”元素中检索“开始”)
  • 我知道有些标记列表元素没有嵌套的begin元素,这可能会增加一些混乱。我添加Cstr以克服这一问题,但不确定这是否足够

  • 在阅读MSDN之后,似乎使用.substands(Xdoc.substands)可以从所有元素中获取所有数据,元素将返回我所述的路径上的数据,因此我可以告诉您,上述代码中的数据“应该”可用。有人能帮我从标记列表中获取begin数据吗?

    缺少XML名称空间声明。使用

    .Tag = CStr(cust.Element("tag-list").Element("begin"))
    

    您确定标记元素有效吗?我看不到最后的标签,抱歉,我注意到我没有正确地添加/格式化XML,我现在已经改变了,你可能想考虑使用XPath:
    .Tag = CStr(cust.Element("tag-list").Element("begin"))
    
    .Tag = CStr(cust.Element(ns + "tag-list").Element(ns + "begin"))