热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

将XML转换为VB.NET字典-ConvertXMLtoVB.NETDictionary

Imtryingtoputsub-childvaluesfromXMLintoadictionarycollectionusingLINQ.Ivedonethis

I'm trying to put sub-child values from XML into a dictionary collection using LINQ. I've done this with lists and custom collections which follow the same structure as the XML but am unable to search for specific values. If I know parentName, childName, and subChildName I want to be able to find subChildProperty1.value and subChildProperty2.value without iterating through the entire collection and each of the subsequent sub-collections, as I have to do with lists. This may not be the best implementation, and am open to suggestions, but still would like to figure out how to make this work. This would then allow me to have a dictionary item be:

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

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

and I could just concatenate strings to form a specific key and search on that key to return a value.

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

XML:


    
        parentNameValue1
        
            childNameValue1
            
                subchildNameValue1
                0
                5
            
            
                subchildNameValue2
                0
                10
            
        
    

This question is somewhat similar to " rel="nofollow noopener" target="_blank">this question here but I could not get the code working in VB for my application.

这个问题在这里有点类似于这个问题但是我无法在VB中为我的应用程序使用代码。

I am new to SO (and VB) so I apologize if my etiquette is incorrect.

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

1 个解决方案

#1


4  

With VB.NET's great XML support, this is quite easy to do:

借助VB.NET的出色XML支持,这很容易做到:

Imports System.Xml.Linq

...

Sub Main()
    Dim xml = _
        
            
                parentNameValue1
                
                    childNameValue1
                    
                        subchildNameValue1
                        0
                        5
                    
                    
                        subchildNameValue2
                        0
                        10
                    
                
            
        

    ' 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.
        Dim parentName = parent..Value
        For Each child In parent.
            Dim childName = child..Value
            For Each subchild In child.
                Dim subchildName = subchild..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

(Clearly, the code assumes Option Strict On and Option Infer On.)

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


推荐阅读
  • 模板引擎StringTemplate的使用方法和特点
    本文介绍了模板引擎StringTemplate的使用方法和特点,包括强制Model和View的分离、Lazy-Evaluation、Recursive enable等。同时,还介绍了StringTemplate语法中的属性和普通字符的使用方法,并提供了向模板填充属性的示例代码。 ... [详细]
  • 本文介绍了Redis的基础数据结构string的应用场景,并以面试的形式进行问答讲解,帮助读者更好地理解和应用Redis。同时,描述了一位面试者的心理状态和面试官的行为。 ... [详细]
  • eclipse学习(第三章:ssh中的Hibernate)——11.Hibernate的缓存(2级缓存,get和load)
    本文介绍了eclipse学习中的第三章内容,主要讲解了ssh中的Hibernate的缓存,包括2级缓存和get方法、load方法的区别。文章还涉及了项目实践和相关知识点的讲解。 ... [详细]
  • 个人学习使用:谨慎参考1Client类importcom.thoughtworks.gauge.Step;importcom.thoughtworks.gauge.T ... [详细]
  • JDK源码学习之HashTable(附带面试题)的学习笔记
    本文介绍了JDK源码学习之HashTable(附带面试题)的学习笔记,包括HashTable的定义、数据类型、与HashMap的关系和区别。文章提供了干货,并附带了其他相关主题的学习笔记。 ... [详细]
  • 本文介绍了一种轻巧方便的工具——集算器,通过使用集算器可以将文本日志变成结构化数据,然后可以使用SQL式查询。集算器利用集算语言的优点,将日志内容结构化为数据表结构,SPL支持直接对结构化的文件进行SQL查询,不再需要安装配置第三方数据库软件。本文还详细介绍了具体的实施过程。 ... [详细]
  • 在Android开发中,使用Picasso库可以实现对网络图片的等比例缩放。本文介绍了使用Picasso库进行图片缩放的方法,并提供了具体的代码实现。通过获取图片的宽高,计算目标宽度和高度,并创建新图实现等比例缩放。 ... [详细]
  • Spring源码解密之默认标签的解析方式分析
    本文分析了Spring源码解密中默认标签的解析方式。通过对命名空间的判断,区分默认命名空间和自定义命名空间,并采用不同的解析方式。其中,bean标签的解析最为复杂和重要。 ... [详细]
  • SpringBoot uri统一权限管理的实现方法及步骤详解
    本文详细介绍了SpringBoot中实现uri统一权限管理的方法,包括表结构定义、自动统计URI并自动删除脏数据、程序启动加载等步骤。通过该方法可以提高系统的安全性,实现对系统任意接口的权限拦截验证。 ... [详细]
  • 向QTextEdit拖放文件的方法及实现步骤
    本文介绍了在使用QTextEdit时如何实现拖放文件的功能,包括相关的方法和实现步骤。通过重写dragEnterEvent和dropEvent函数,并结合QMimeData和QUrl等类,可以轻松实现向QTextEdit拖放文件的功能。详细的代码实现和说明可以参考本文提供的示例代码。 ... [详细]
  • 本文分享了一个关于在C#中使用异步代码的问题,作者在控制台中运行时代码正常工作,但在Windows窗体中却无法正常工作。作者尝试搜索局域网上的主机,但在窗体中计数器没有减少。文章提供了相关的代码和解决思路。 ... [详细]
  • Java容器中的compareto方法排序原理解析
    本文从源码解析Java容器中的compareto方法的排序原理,讲解了在使用数组存储数据时的限制以及存储效率的问题。同时提到了Redis的五大数据结构和list、set等知识点,回忆了作者大学时代的Java学习经历。文章以作者做的思维导图作为目录,展示了整个讲解过程。 ... [详细]
  • 本文讨论了一个关于cuowu类的问题,作者在使用cuowu类时遇到了错误提示和使用AdjustmentListener的问题。文章提供了16个解决方案,并给出了两个可能导致错误的原因。 ... [详细]
  • Go GUIlxn/walk 学习3.菜单栏和工具栏的具体实现
    本文介绍了使用Go语言的GUI库lxn/walk实现菜单栏和工具栏的具体方法,包括消息窗口的产生、文件放置动作响应和提示框的应用。部分代码来自上一篇博客和lxn/walk官方示例。文章提供了学习GUI开发的实际案例和代码示例。 ... [详细]
  • 先看官方文档TheJavaTutorialshavebeenwrittenforJDK8.Examplesandpracticesdescribedinthispagedontta ... [详细]
author-avatar
加勒比海盗的骷髅_829
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有