【发布时间】:2009-09-29 05:08:46
【问题描述】:
在 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>
我想我可以使用这个取自另一个 SO 帖子的代码将 XML 转换为相应的对象
Imports System.IO
Imports System.Text
Public Class Xml
Public Shared Function SerializeToXMLString(ByVal ObjectToSerialize As Object) As String
Dim mem As MemoryStream = New MemoryStream()
Dim ser As System.Xml.Serialization.XmlSerializer = New System.Xml.Serialization.XmlSerializer(ObjectToSerialize.GetType())
ser.Serialize(mem, ObjectToSerialize)
Dim ascii As ASCIIEncoding = New ASCIIEncoding()
Return ascii.GetString(mem.ToArray())
End Function
Public Shared Function DeSerializeFromXMLString(ByVal TypeToDeserialize As System.Type, ByVal xmlString As String) As Object
Dim bytes() As Byte = System.Text.Encoding.UTF8.GetBytes(xmlString)
Dim mem As MemoryStream = New MemoryStream(bytes)
Dim ser As System.Xml.Serialization.XmlSerializer = New System.Xml.Serialization.XmlSerializer(TypeToDeserialize)
Return ser.Deserialize(mem)
End Function
End Class
..但问题是,我到底该如何定义这些对象——即使对于缩小的简单示例也是如此?
例如,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
我知道我可能离这儿很远。有人请把我推向正确的方向......
谢谢
跟进问题。
如何处理嵌套集合,例如本例中的 Placemark 集合?
【问题讨论】:
标签: xml vb.net web-services