Извините, если это было опубликовано ранее, но все решения, которые я смог найти, касались только адресованных файлов XML на слое потомков.
У меня есть форма, отображающая древовидную структуру.Вместо того, чтобы редактировать непосредственно в коде, я хочу создать файл XML и заполнить его древовидным представлением.Мой XML похож на это:
<Root>
<Element>
<ChildElement>
<GrandChildElement></GrandChildElement>
<GrandChildElement></GrandChildElement>
</ChildElement>
<ChildElement>
<GrandChildElement></GrandChildElement>
<GrandChildElement></GrandChildElement>
</ChildElement>
</Element>
<Element>
<ChildElement>
<GrandChildElement></GrandChildElement>
<GrandChildElement></GrandChildElement>
</ChildElement>
<ChildElement>
<GrandChildElement></GrandChildElement>
<GrandChildElement></GrandChildElement>
</ChildElement>
</Element>
</Root>
GrandChildElements - это интерактивные узлы в моем дереве, которые можно использовать для выбора разных вещей.Остальное используется, чтобы визуально классифицировать их.
Пока мне не удалось найти способ включить элементы GrandChildElements.Заполнение его без GrandChildElements может быть выполнено с помощью рекурсии следующим образом:
private void treeView_Load(object sender, EventArgs e)
{
XmlDocument xmldoc = new XmlDocument();
System.IO.FileStream fs = new System.IO.FileStream("treeNodes.xml", FileMode.Open, FileAccess.Read);
xmldoc.Load(fs);
XmlNode xmlnode = xmldoc.ChildNodes[1];
tvKortskab.Nodes.Clear();
tvKortskab.Nodes.Add(new TreeNode(xmldoc.DocumentElement.Name));
TreeNode tNode = tvKortskab.Nodes[0];
AddNode(xmlnode, tNode);
}
private void AddNode(XmlNode inXmlNode, TreeNode inTreeNode)
{
XmlNode xNode;
TreeNode tNode;
XmlNodeList childNodes;
XmlNodeList subChildNodes;
if (inXmlNode.HasChildNodes)
{
childNodes = inXmlNode.ChildNodes;
for (int i = 0; i <= childNodes.Count - 1; i++)
{
xNode = childNodes[i];
inTreeNode.Nodes.Add(new TreeNode(xNode.Name));
tNode = inTreeNode.Nodes[i];
AddNode(xNode, tNode);
}
else
{
inTreeNode.Text = inXmlNode.InnerText.ToString();
}
}
Я пробовал вложить в него цикл, проверяя, есть ли у дочерних узлов дочерние элементы, и затем добавляя их.Это сработало, но также добавило кучу пустых и дублирующих узлов.