2014-09-03 61 views
1

我有下面的XML文档:解析XML到多个类

<?xml version="1.0" encoding="UTF-8"?> 
<Resp> 
    <dData> 
    <Desc></Desc> 
    <dId></dId> 
    <Num></Num> 
    <Ref></Ref> 
    <Ms></Ms> 
    <Im></Im> 
    </dData> 
    <Type></Type> 
    <RespData> 
    <dc></dc> 
    <sString></sString> 
    </RespData> 
</Resp> 

与以下类:

Public Class dData 
    Public Property Desc As String  
    Public Property DID As String 
    Public Property Num As Integer  
    Public Property Ref As String  
    Public Property Ms As String   
    Public Property Im As String   
End Class 

Public Class RespData 
    Public Property DC As Integer   
    Public Property sString As String 
End Class 

最后上述的组合:

Public Class Resp 
    Public Property URData As dData 
    Public Property Type As String 
    Public Property URRespData As RespData 
End Class 

我想要将上面的XML解析到类Resp中。

我保存在XML文件转换为XMLDocument称为XmlInput和我写了这个:

Dim handleXML = From h In xmlInput.Elements("Resp") 

然后handleXML.Count返回1

我预计HandleXML.Count返回3(DDATA,类型,RespData)

然后我循环每个元素的节点并将值保存到它所属的类中。 但它返回1

难道我做错了什么? 有没有更好的方法?

任何帮助,将不胜感激。

+0

您应该实现[IXmlSerializable](http://msdn.microsoft.com/en-us/library/system.xml.serialization.ixmlserializable(v = vs.110).aspx)接口,然后使用[ XmlSerializer](http://msdn.microsoft.com/en-us/library/system.xml.serialization.xmlserializer(v = vs.110).aspx)类来序列化/反序列化。 – 2014-09-03 16:09:44

回答

0

我预计HandleXML.Count返回3(DDATA,类型,RespData)

1号是正确的输出,因为你的XML只包含一个<Resp>元素。要获得chldren的<Resp>你应该已经走了一个多级下调树:

Dim handleXML = From h In xmlInput.Elements("Resp").Elements() 
'here handleXML.Count is 3' 

您可能还需要考虑不同的路线,看看XML序列化/反序列化:MSDN: System.Xml.Serialization.XmlSerializer