0

摘要:我想在 for each 循环中创建对象。

我有一个类——仪表板,它有一些属性——长度、高度等。

此信息包含在 XML 文档中,但我的类的属性只是 XML 中信息的一小部分。

我创建了一个 XElement 集合,我可以迭代这些,但是如何在循环的每次迭代中创建我的对象?

Dim Col_DashBoards As IEnumerable(Of XElement) = From XDashboard In XDocument.Load(filename).Descendants("dashboard")
        For Each XDashboard In Col_DashBoards
            'PseudoCode
        Dim Xdashboard.Name as New DashboardClassObject
            Xdashboard.Name.Height = XDashboard.Element("Height").value 
            ...
        Next
4

1 回答 1

0

如果我正确理解了您的问题,您是否希望基于 XML 文档中的数据子集创建一个新对象?

下面是一个函数,它将DashboardClassObject为每个匹配节点生成一个新节点并填充该对象。DashboardclassObject返回类型列表。

Public Function GenerateDashBoardFromXML(filename as string) As List(Of DashboardClassObject)
   Dim dashboardList As List(Of DashboardClassObject) = New List(Of DashboardClassObject)()
   Dim Col_DashBoards As IEnumerable(Of XElement) = From XDashboard In XDocument.Load(filename)?.Descendants("dashboard")

   For Each XDashboard In Col_DashBoards
       Dim dashboard As DashboardClassObject = New DashboardClassObject () With {
           .Name = XDashboard.Element("Height")?.value 
       }
       dashboardList.Add(dashboard)
   Next

   return dashboardList
End Function

需要注意的是,这里使用了 Null 检查。仅当找到匹配元素时才会填充以下内容。空合并运算符也是此处的一个选项。

.Name = XDashboard.Element("Height")?.value 
于 2018-06-19T15:14:20.393 回答