我在vb.net中有一个XML字符串或文件。我的问题是,你如何获得一个节点拥有的世代数(向下儿童,孙子,曾孙......)?
这是我的代码:
Dim doc As New XmlDocument()
doc.LoadXml(Str)
Dim root As XmlNode = doc.SelectSingleNode("/ROOT/SUBCATEGORY")
If root.HasChildNodes Then
Dim i As Integer
For i = 0 To root.ChildNodes.Count - 1
TextBox1.AppendText(root.ChildNodes(i).Name)
TextBox1.AppendText(vbTab)
TextBox1.AppendText(Number Of Generations)
TextBox1.AppendText(vbNewLine)
Next (i)
End If
答案 0 :(得分:0)
XmlNodeReader
类有一个Depth
属性,可以告诉你当前节点的深度,如下所示:
Dim doc As New XmlDocument()
doc.LoadXml(Str)
Dim deepestNodeLevel As Integer = 0
Using nodeReader As New XmlNodeReader(doc)
While nodeReader.Read()
If nodeReader.Depth > deepestNode Then
deepestNodeLevel = nodeReader.Depth
End If
End While
End Using
现在,在浏览完整个XML文档后,您将知道结构中任何元素的最深深度(deepestNodeLevel
)。
根据您发布的代码进行调整,您可以执行以下操作:
Dim doc As New XmlDocument()
doc.LoadXml(Str)
Using nodeReader As New XmlNodeReader(doc)
While nodeReader.Read()
TextBox1.AppendText(nodeReader.Name)
TextBox1.AppendText(vbTab)
TextBox1.AppendText(nodeReader.Depth.ToString())
TextBox1.AppendText(vbNewLine)
End While
End Using