0

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

1 回答 1

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
于 2013-08-12T23:26:02.497 回答