什么';在VB.NET中,将XML解析为对象的最简单方法是什么?
在VB.NET中,解析此XML的最简单方法是什么 以下是完整源代码的示例: 我相信XML可以直接读入与XML结构匹配的类结构中 让我们看一下上面示例中的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
<?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文件。谢谢你的帮助