我有一个XML文件,我正在使用LINQ进行处理。我想基本上将XML数据序列化为自定义对象,但不知道如何。
简化XML
<Data>
<Group id="1">
<Child id="1"/>
<Child id="2"/>
<Child id="3"/>
</Group>
<Group id="2">
<Child id="1"/>
<Child id="2"/>
<Child id="3"/>
</Group>
</Data>
我有一个名为Group的类,其中包含名为Children的属性,它是(Child)的列表。
我可以在linq中执行以下操作来生成Enurable(of Group):
dim g = From item In _
XElement.Load("XMLFile.xml", LoadOptions.None)...<Group> _
Select New nABLE4ConfigInfo.Group(item.@id)
如何完成上述LINQ查询以填充Group对象的Children属性?
答案 0 :(得分:2)
我认为这个课程与System.Xml.Serialization.XmlSerializer
配对,可以解决这个问题:
<Serializable> _
Public Class Data
<Serializable> _
Public Class Group
<Serializable> _
Public Class Child
<XmlAttribute> _
Public id As Integer
End Class
<XmlArray> _
Public Child() As Child
<XmlAttribute> _
Public id As Integer
End Class
<XmlArray> _
Public Group() As Group
End Class
该类可能还需要一些工作:正确地使用数组可能很棘手。
答案 1 :(得分:1)
它就像嵌套的select语句和类上的正确构造函数一样简单。
Dim g = From item In _
XElement.Load("XMLFile.xml", LoadOptions.None)...<Group> _
Select New Group(id:=item.@id, _
Children:=(From c In item...<Child> Select c.@id).ToList)