2014-09-03 63 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