【问题标题】:How to get element names from an xml document in vb.net如何从 vb.net 中的 xml 文档中获取元素名称
【发布时间】:2012-12-22 22:07:24
【问题描述】:

我有一个 xml 文件,例如:

<config>
   <email  Host="201.0.0.0" From="mail@mail.com" Pass="xxx" Name="xxx"/>
   <gir    g1="Traditional" g2="mid Techn" g3="High Tech"/>
   <costs>
     <Pre-Incube    inscr="7000.00"  add="300.00"/>
     <Normal        inscr="1600.00"  inc="7000.00" add="500.00"/>
     <Urgent        inscr="1600.00"  inc="5000.00" add="500.00"/>
     <Estance       inscr="1600.00"  men="2500.00"/> 
     <Post          inscr="1600.00"  men="1500.00"/> 
   </costs>
</config>

要获取元素“gir”的属性,我会这样做

Dim doc As XmlDocument = New XmlDocument()
doc.Load(path)
Dim root As XmlNode = doc.DocumentElement         
Dim nodeGir As XmlNode = root.SelectSingleNode("/config/gir")
cboGir.Items.Add(nodeGir.Attributes.ItemOf("g1").InnerText)
cboGir.Items.Add(nodeGir.Attributes.ItemOf("g2").InnerText)
cboGir.Items.Add(nodeGir.Attributes.ItemOf("g3").InnerText)

但是如何获取“costs”下子元素的名称

Pre-Incube, Normal, Urgent, Estance, Post  

【问题讨论】:

    标签: xml vb.net visual-studio-2010 .net-4.0


    【解决方案1】:

    改编自this MSDN page

    Dim costs As XmlNode = root.SelectSingleNode("/config/costs")
    
    Dim i As Integer 
    For i = 0 To costs.ChildNodes.Count - 1
        cboGir.Items.Add(costs.ChildNodes[i].Name)
    Next i
    

    或者可能更简单(来自this MSDN page):

    Dim costs As XmlNodeList = root.SelectNodes("/config/costs/*")
    For Each book In costs      
        cboGir.Items.Add(book.Name)
    Next 
    

    NameXmlNode 上的属性 - 文档是您的朋友。

    【讨论】:

    • 我已经尝试了 Dim node As XmlNode = root.SelectSingleNode("/config/costs") For Each instance As XmlNode In node.ChildNodes cboGir.Items.Add(instance.InnerText) Next 和 ` Dim costs As XmlNodeList = root.SelectNodes("/config/costs") For Each book In costs Console.WriteLine(book.InnerText) Next ` 但是执行此操作后,我尝试填充的组合框为空
    • 感谢您的帮助,但我正在寻找“成本”的元素而不是该元素的属性,我已经尝试了您的代码,但在组合框中仍然一无所获
    • 我看到了,抱歉,元素的名称。这很不寻常,通常是您感兴趣的内容。再次更新。
    【解决方案2】:

    要获取所有成本子元素的名称,您可以这样做:

    For Each node As XmlNode In doc.SelectNodes("/config/costs/*")
        cboGir.Items.Add(node.Name)
    Next
    

    【讨论】:

      猜你喜欢
      • 2018-11-18
      • 2011-09-16
      • 2010-10-25
      • 1970-01-01
      • 1970-01-01
      • 2013-01-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多