gpt4 book ai didi

xml - 将 XML 转换为 VB.NET 字典

转载 作者:数据小太阳 更新时间:2023-10-29 02:05:21 25 4
gpt4 key购买 nike

我正在尝试使用 LINQ 将 XML 中的子子值放入字典集合中。我已经使用列表和自定义集合完成了此操作,它们遵循与 XML 相同的结构,但无法搜索特定值。如果我知道 parentName、childName 和 subChildName,我希望能够找到 subChildProperty1.value 和 subChildProperty2.value,而无需遍历整个集合和每个后续子集合,因为我必须处理列表。这可能不是最好的实现方式,我愿意接受建议,但仍然想弄清楚如何使它工作。这将允许我有一个字典项目是:

key = "parentNameValue1.childNameValue1.subchildNameValue1.subChildProperty1"
value = 0

我可以连接字符串以形成一个特定的键并搜索该键以返回一个值。

XML:

<root>
<parent>
<parentName>parentNameValue1</parentName>
<child>
<childName>childNameValue1</childName>
<subchild>
<subchildName>subchildNameValue1</subchildName>
<subChildProperty1>0</subChildProperty1>
<subChildProperty2>5</subChildProperty2>
</subchild>
<subchild>
<subchildName>subchildNameValue2</subchildName>
<subChildProperty1>0</subChildProperty1>
<subChildProperty2>10</subChildProperty2>
</subchild>
</child>
</parent>
<root>

这个问题有点类似于this question here但我无法让代码在 VB 中为我的应用程序工作。

我是 SO(和 VB)的新手,所以如果我的礼仪不正确,我深表歉意。

最佳答案

有了 VB.NET 强大的 XML 支持,这很容易做到:

Imports System.Xml.Linq

...

Sub Main()
Dim xml = _
<root>
<parent>
<parentName>parentNameValue1</parentName>
<child>
<childName>childNameValue1</childName>
<subchild>
<subchildName>subchildNameValue1</subchildName>
<subChildProperty1>0</subChildProperty1>
<subChildProperty2>5</subChildProperty2>
</subchild>
<subchild>
<subchildName>subchildNameValue2</subchildName>
<subChildProperty1>0</subChildProperty1>
<subChildProperty2>10</subChildProperty2>
</subchild>
</child>
</parent>
</root>

' Alternatively, load XML from a file
' Dim xml = XDocument.Load(fileName)

Dim dict As New Dictionary(Of String, Integer)

' Extract the properties
For Each parent In xml.<parent>
Dim parentName = parent.<parentName>.Value
For Each child In parent.<child>
Dim childName = child.<childName>.Value
For Each subchild In child.<subchild>
Dim subchildName = subchild.<subchildName>.Value
For Each prop In subchild.Elements.Where(Function(e) e.Name <> "subchildName")
dict.Add(String.Format("{0}.{1}.{2}.{3}", parentName, childName, subchildName, prop.Name), _
Integer.Parse(prop.Value))
Next
Next
Next
Next

' Print the values, to show that we've done a good job
For Each kv In dict
Console.WriteLine("{0}: {1}", kv.Key, kv.Value)
Next
Console.ReadLine()
End Sub

(显然,代码假定 Option Strict On 和 Option Infer On。)

关于xml - 将 XML 转换为 VB.NET 字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10804917/

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