如何使用 Visual Basic 读取 xml 标签的 id
Posted
技术标签:
【中文标题】如何使用 Visual Basic 读取 xml 标签的 id【英文标题】:how to read the id of an xml tag with visual basic 【发布时间】:2019-10-25 19:30:29 【问题描述】:我想获取一个xml标签的id
例如
<name id ="john">
我想得到 john 的 id,
我的代码:
Public Class Form1
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
My.Computer.Network.DownloadFile(
"https://example.net/file.xml",
"files/file.xml")
Dim reader As New XmlTextReader("files/file.xml")
While reader.Read()
Select Case reader.NodeType
Case XmlNodeType.Element
listBox1.Items.Add("<" + reader.Name & ">")
Exit Select
Case XmlNodeType.Text
listBox1.Items.Add(reader.Value)
Exit Select
Case XmlNodeType.EndElement
listBox1.Items.Add("")
Exit Select
End Select
End While
End Sub
End Class
文件.xml:
<?xml version="1.0"?>
<map>
<name id="john" revision="990000237">
<part id="3554" type="ca"/>
<part id="3555" type="ca"/>
</name>
<name id="well" revision="990000236">
<part id="3551" type="he"/>
</name>
我不知道是否有这个功能,但我想知道是否有办法做到这一点,我将使用 WHILE 从标签中获取所有 id。
【问题讨论】:
If reader.HasAttributes
=> reader.AttributeCount
=> reader.Getattribute(0)
或 reader.GetAttribute("id")
(Why should I use exit select? - 基本上,你不应该。)
如果您改为loaded the XML into an XmlDocument,则可以使用Dim desiredId = x.SelectSingleNode("//name/@id")?.Value
,这比使用XDocument 简单一些。 (.NET 中有几个与 XML 相关的东西,找到最简单的一个来获得你想要的结果似乎是成功的一半。)
谢谢大家用jdweng的代码解决了
【参考方案1】:
试试 xml linq:
Imports System.Xml
Imports System.Xml.Linq
Module Module1
Const FILENAME As String = "c:\temp\test.xml"
Sub Main()
Dim map As New Map(FILENAME)
End Sub
End Module
Public Class Map
Public Shared maps As New List(Of Map)
Public name As String
Public revision As String
Public parts As New Dictionary(Of String, String)
Public Sub New()
End Sub
Public Sub New(filename As String)
Dim doc As XDocument = XDocument.Load(filename)
For Each xName As XElement In doc.Descendants("name")
Dim newMap As New Map
maps.Add(newMap)
newMap.name = CType(xName.Attribute("id"), String)
newMap.revision = CType(xName.Attribute("revision"), String)
newMap.parts = xName.Descendants("part") _
.GroupBy(Function(x) CType(x.Attribute("id"), String), Function(y) CType(y.Attribute("type"), String)) _
.ToDictionary(Function(x) x.Key, Function(y) y.FirstOrDefault())
Next xName
End Sub
End Class
【讨论】:
以上是关于如何使用 Visual Basic 读取 xml 标签的 id的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Visual Basic 2010 中读取 CSV 文件并在网格中显示结果?
级联组合框的 Visual Basic ACCDB 文件读取