gpt4 book ai didi

vb.net - 在 VB.NET 中使用 XML 文字进行递归是可能的吗?

转载 作者:行者123 更新时间:2023-12-04 11:32:33 25 4
gpt4 key购买 nike

我有一个类(class)叫 公司简介 有一些简单的属性,然后它可以有一个集合 ProfileItem 再次具有一些简单的属性,然后它可以具有 的集合。 ProfileItem (递归)。

现在我正在尝试使用 VB.NET (3.5) 附带的 XML 文字生成一个非常简单的保存功能。

我使用的代码如下:

  Dim xdoc As XDocument = _
<?xml version="1.0" encoding="utf-8"?>
<profiles>
<%= _
From p In _Profiles _
Select <profile name=<%= p.Name %>>
<%= _
From i In p.GetProfileItems _
Select <item>
<name><%= i.Name %></name>
<action><%= i.Action.ToString %></action>
<type><%= i.Type.ToString %></type>
<arguments><%= i.Arguments %></arguments>
<dependencies>
<%= _
From d In i.GetDependencies _
Select <dependency>
<name><%= d.Name %></name>
</dependency> _
%>
</dependencies>
</item> _
%>
</profile> _
%>
</profiles>

与标签相关的部分应该成为递归的,但我不知道它是否以某种方式受此语法支持。

我应该重写所有避免使用 XML 文字来实现递归吗?

最佳答案

递归是我喜欢 VB.NET XML 文字的原因之一!

为了进行递归,您需要一个接受 ProfileItems 集合并返回 XElement 的函数。然后,您可以在 XML 文字中递归调用该函数。

此外,为了使递归起作用,GetProfileItems 和 GetDependencies 需要具有相同的名称(重命名其中之一)并以相同的 Xml 元素结构显示。递归函数可能如下所示:

Function GetProfileItemsElement(ByVal Items As List(Of ProfileItem) As XElement
Return <items>
<%= From i In Items _
Select <item>
<name><%= i.Name %></name>
<!-- other elements here -->
<%= GetProfileItemsElement(i.GetDependencies) %>
</item> %>
</items>
End Function

当您到达为 GetDependencies 函数返回空列表的项目时,递归将结束。在这种情况下,嵌套的 items元素将为空: <items/> . XML 文字足够智能,可以组合开始和结束 items当没有任何子元素时标记。

关于vb.net - 在 VB.NET 中使用 XML 文字进行递归是可能的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1193448/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com