【发布时间】:2014-04-17 16:42:00
【问题描述】:
我有一个显示树结构的文本文件。空格数表示给定成员的级别。例如下面,组可以有成员或子组,子组可以有成员等等:
MainGroup
Member1
Member2
Group1
Member11
Member12
Group12
Member21
Member22
Member3
对不起大家, 我在这里的第一次也是第一个问题是弄清楚整个格式化的事情。
这是我迄今为止尝试过的:
- 我正在将文本文件读入数据表(这不是必需的,但我需要数据表来为我显示数据。)。
-
遍历每一行(有一列),我创建一个节点。我找到了空格的数量。如果为零,我将属性添加到此节点并将其添加到 doc。如果它有空格,我会循环并继续向该节点添加子节点。那就是事情对我不起作用的地方。
Sub ExportToEXML Dim datarow As DataRow Dim fileName As String = "" Dim level As Integer = 0 Dim counter As Integer = 0 Dim doc As XmlDocument = New XmlDocument Dim docNode As XmlNode = doc.CreateXmlDeclaration("1.0", "UTF-8", Nothing) doc.AppendChild(docNode) Dim ComponentsNode As XmlNode = doc.CreateElement("Components") doc.AppendChild(ComponentsNode) Dim firstrow As DataRow For i As Integer = 0 To dt.Rows.Count - 1 firstrow = dt.Rows.Item(i) fileName = firstrow(0) level = CountSpacesBeforeFirstChar(fileName) Dim partNode As XmlNode = doc.CreateElement("Component") Dim att As XmlAttribute = doc.CreateAttribute("Name") att.Value = fileName partNode.Attributes.Append(att) GetChildNodes(partNode, i, doc, 0, level, dt) ComponentsNode.AppendChild(partNode) Next doc.Save("D:\TestXML.xml") End Sub Private Sub GetChildNodes(ByRef xNode As XmlNode, ByRef rowInd As Integer, ByRef xDoc As XmlDocument, level As Integer, table As DataTable) Dim lev As Integer Dim fileName As String Dim dr As DataRow For i As Integer = rowInd + 1 To table.Rows.Count - 1 dr = table.Rows.Item(i) fileName = dr(0) lev = CountSpacesBeforeFirstChar(fileName) If lev = 0 Then 'has no children Exit Sub End If If lev > level Then Dim partNode As XmlNode = xDoc.CreateElement("Component") Dim att As XmlAttribute = xDoc.CreateAttribute("Name") att.Value = fileName partNode.Attributes.Append(att) xNode.AppendChild(partNode) GetChildNodes(xNode, i, xDoc, lev, table) End If Next End Sub
【问题讨论】:
-
你尝试了什么?你在哪里遇到问题?发布您的代码。
-
您能解释一下“空格数表示给定成员的级别”是什么意思吗?是固定宽度的文本文件吗?