在VB .NET中从LINQ生成复杂对象到XML

时间:2009-04-01 23:01:34

标签: vb.net linq

我有一个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属性?

2 个答案:

答案 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)