Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/14.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.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中,将XML解析为对象的最简单方法是什么?_Xml_Vb.net_Web Services - Fatal编程技术网

什么';在VB.NET中,将XML解析为对象的最简单方法是什么?

什么';在VB.NET中,将XML解析为对象的最简单方法是什么?,xml,vb.net,web-services,Xml,Vb.net,Web Services,在VB.NET中,解析此XML的最简单方法是什么 以下是完整源代码的示例: 我相信XML可以直接读入与XML结构匹配的类结构中 让我们看一下上面示例中的XML <?xml version="1.0" encoding="UTF-8" ?> - <kml xmlns="http://earth.google.com/kml/2.0"> - <Response> <name>1321 herbert street, Warren, MI&l

在VB.NET中,解析此XML的最简单方法是什么

以下是完整源代码的示例:

我相信XML可以直接读入与XML结构匹配的类结构中

让我们看一下上面示例中的XML

  <?xml version="1.0" encoding="UTF-8" ?> 
- <kml xmlns="http://earth.google.com/kml/2.0">
- <Response>
  <name>1321 herbert street, Warren, MI</name> 
  <Status>X</Status> 
  </Response>
  </kml>
…但问题是,即使对于缩小的简单示例,我该如何定义这些对象

例如,kml部分令人困惑

我从这门课开始

Public Class kml

    Public Class Response


        Public Name As String
        Public Status As String

    End Class

End Class
…但我运行以下代码:

Dim kml As kml
kml = CType(Xml.DeSerializeFromXMLString(GetType(kml), XmlDoc.OuterXml), kml)
…我得到一个解析错误

我也试过:

Public Class kml

    Private _Response As New Response

    Public ReadOnly Property Response() As Response
        Get
            Return _Response
        End Get
    End Property

End Class

Public Class Response


    Public name As String
    Public Status As String

End Class
我知道我可能离这里很远。有人请把我推向正确的方向

thx

跟进问题


如何处理嵌套集合,例如本例中的Placemark集合?

只需去掉
类响应
,并使用
GetType(kml)


基本上,您不需要嵌套类(尽管您可以使用它们)。嵌套元素表示为名称与元素名称对应的属性;如果属性本身是类类型,则它可以有更多嵌套元素(依次映射到该类的属性)。类本身的名称唯一重要的情况是根元素。

只要去掉
类响应
,使用
GetType(kml)


基本上,您不需要嵌套类(尽管您可以使用它们)。嵌套元素表示为名称与元素名称对应的属性;如果属性本身是类类型,则它可以有更多嵌套元素(依次映射到该类的属性)。类本身的名称唯一重要的情况是根元素。

您的
kml
Response
类应该如下所示:

  Public Class kml
        Private _Response As Response
        Public Property Response() As Response
            Get
                Return _Response
            End Get
            Set(ByVal value As Response)
                _Response = value
            End Set
        End Property
    End Class
    Public Class Response
        Private _name As String
        Public Property name() As String
            Get
                Return _name
            End Get
            Set(ByVal value As String)
                _name = value
            End Set
        End Property
        Private _Status As String
        Public Property Status() As String
            Get
                Return _Status
            End Get
            Set(ByVal value As String)
                _Status = value
            End Set
        End Property
    End Class
Dim serializer As New XmlSerializer(GetType(kml), "http://earth.google.com/kml/2.0")               
Dim result As kml = TryCast(serializer.Deserialize(mem), kml)
然后可以像这样反序列化:

  Public Class kml
        Private _Response As Response
        Public Property Response() As Response
            Get
                Return _Response
            End Get
            Set(ByVal value As Response)
                _Response = value
            End Set
        End Property
    End Class
    Public Class Response
        Private _name As String
        Public Property name() As String
            Get
                Return _name
            End Get
            Set(ByVal value As String)
                _name = value
            End Set
        End Property
        Private _Status As String
        Public Property Status() As String
            Get
                Return _Status
            End Get
            Set(ByVal value As String)
                _Status = value
            End Set
        End Property
    End Class
Dim serializer As New XmlSerializer(GetType(kml), "http://earth.google.com/kml/2.0")               
Dim result As kml = TryCast(serializer.Deserialize(mem), kml)

您的
kml
Response
类应该如下所示:

  Public Class kml
        Private _Response As Response
        Public Property Response() As Response
            Get
                Return _Response
            End Get
            Set(ByVal value As Response)
                _Response = value
            End Set
        End Property
    End Class
    Public Class Response
        Private _name As String
        Public Property name() As String
            Get
                Return _name
            End Get
            Set(ByVal value As String)
                _name = value
            End Set
        End Property
        Private _Status As String
        Public Property Status() As String
            Get
                Return _Status
            End Get
            Set(ByVal value As String)
                _Status = value
            End Set
        End Property
    End Class
Dim serializer As New XmlSerializer(GetType(kml), "http://earth.google.com/kml/2.0")               
Dim result As kml = TryCast(serializer.Deserialize(mem), kml)
然后可以像这样反序列化:

  Public Class kml
        Private _Response As Response
        Public Property Response() As Response
            Get
                Return _Response
            End Get
            Set(ByVal value As Response)
                _Response = value
            End Set
        End Property
    End Class
    Public Class Response
        Private _name As String
        Public Property name() As String
            Get
                Return _name
            End Get
            Set(ByVal value As String)
                _name = value
            End Set
        End Property
        Private _Status As String
        Public Property Status() As String
            Get
                Return _Status
            End Get
            Set(ByVal value As String)
                _Status = value
            End Set
        End Property
    End Class
Dim serializer As New XmlSerializer(GetType(kml), "http://earth.google.com/kml/2.0")               
Dim result As kml = TryCast(serializer.Deserialize(mem), kml)

在阅读了您的注释(我正在尝试消化)之后,我注意到嵌套类的定义顺序不正确,因此对代码进行了一些修改。还是运气好。重新阅读您的注释(再次)…在阅读了您的注释(我正在尝试消化)之后,我注意到嵌套类的定义顺序不正确,因此对代码进行了一些修改。还是运气好。再次阅读您的评论…谢谢。成功了。现在,让我们看看是否可以在它的基础上构建整个该死的XML文件。谢谢你的帮助谢谢。成功了。现在,让我们看看是否可以在它的基础上构建整个该死的XML文件。谢谢你的帮助