如何获取节点的代数?

时间:2013-08-12 22:20:24

标签: xml vb.net

我在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

1 个答案:

答案 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