private void XmlRekursivImport(TreeNodeCollection elem, XmlNodeList xmlNodeList) { TreeNode treeNode; foreach (XmlNode myXmlNode in xmlNodeList) { //if (myXmlNode.Attributes != null) { if (myXmlNode.Name == "output" || myXmlNode.Name == "windowstyle") { continue; } if (myXmlNode.Name == "#whitespace") { continue; } //MessageBox.Show(myXmlNode.Name); String name = myXmlNode.Name; if (myXmlNode.Attributes != null && myXmlNode.Attributes["name"] != null) { name += " - " + myXmlNode.Attributes["name"].Value; } String ext = XmlElementStringLookup(myXmlNode.Name); if (ext.Length > 0) { if (myXmlNode.Attributes != null && myXmlNode.Attributes[ext] != null) { name += " : " + myXmlNode.Attributes[ext].Value; } else { name += " " + myXmlNode.Value; } } treeNode = new TreeNode(name /*Attributes["value"].Value*/); setImageIndex(myXmlNode, treeNode); if (myXmlNode.ChildNodes.Count > 0) { XmlRekursivImport(treeNode.Nodes, myXmlNode.ChildNodes); } elem.Add(treeNode); sElementList element = new sElementList(treeNode.GetHashCode(), treeNode.Parent.GetHashCode(), treeNode, myXmlNode); ElementList.Add(element); } } }
private void XmlRekursivImport(TreeNodeCollection elem, XmlNodeList xmlNodeList) { TreeNode treeNode; sElementList element; foreach (XmlNode myXmlNode in xmlNodeList) { if (myXmlNode.Name == "output" || myXmlNode.Name == "windowstyle" || myXmlNode.Name == "#whitespace") { continue; } //MessageBox.Show(myXmlNode.Name); String name = getTreeName(myXmlNode); if (myXmlNode.Name == "include") { XmlDocument incDocument = new XmlDocument(); string fname = myXmlNode.Attributes["filename"].Value; if (File.Exists(cDataBase.getPath(fname))) { incDocument.Load(cDataBase.getPath(fname)); string pname = cProperties.getProperty("path_skin_xml"); string sname = pname.Substring(0, pname.Length - 4) + "_"; // "Name-of-skin/skin_" if (!fname.StartsWith(sname)) { sname = "skin_"; } string iname = fname.StartsWith(sname) && fname.EndsWith(".xml") ? fname.Substring(sname.Length, fname.Length - 4 - sname.Length) : fname; treeNode = new TreeNode(name + " : " + iname); treeNode.Tag = incDocument; setImageIndex(myXmlNode, treeNode); XmlRekursivImport(treeNode.Nodes, incDocument.DocumentElement.ChildNodes); elem.Add(treeNode); element = new sElementList(treeNode.GetHashCode(), treeNode.Parent.GetHashCode(), treeNode, myXmlNode); ElementList.Add(element); continue; } } treeNode = new TreeNode(name /*Attributes["value"].Value*/); setImageIndex(myXmlNode, treeNode); if (myXmlNode.ChildNodes.Count > 0) { XmlRekursivImport(treeNode.Nodes, myXmlNode.ChildNodes); } elem.Add(treeNode); element = new sElementList(treeNode.GetHashCode(), treeNode.Parent.GetHashCode(), treeNode, myXmlNode); ElementList.Add(element); } }
public TreeNode XmlSyncAddTreeChild(int hash, TreeNode elem, XmlNode node) { TreeNode treeNode = new TreeNode("new" /*Attributes["value"].Value*/); elem.Nodes.Add(treeNode); sElementList element = new sElementList(treeNode.GetHashCode(), treeNode.Parent.GetHashCode(), treeNode, node); ElementList.Add(element); return(treeNode); }
public void XmlToTreeView(TreeView treeView) { treeView.Nodes.Clear(); ElementList = new ArrayList(); TreeNode treeNode; treeNode = new TreeNode("skin"); treeView.Nodes.Add(treeNode); rootNode = treeNode.GetHashCode(); sElementList element = new sElementList(rootNode, 0, treeNode, xmlDocument.DocumentElement /*.ParentNode*/); ElementList.Add(element); XmlRekursivImport(treeNode.Nodes, xmlDocument.DocumentElement.ChildNodes); xmlTreeView = treeView; }
public void XmlReplaceNodeAndChilds(int hash, String node) { // 3. Remove all Child Nodes // 1. Find the node to replace // 2. Replace it // 4. Import the Child Nodes // 5. Find old Parent and give him new Element XmlTextReader xmlReader = new XmlTextReader(new StringReader(node)); for (int i = 0; i < ElementList.Count;) { sElementList tempChild = (sElementList)ElementList[i]; if (tempChild.ParentHandle == hash) { tempChild.TreeNode.Remove(); ElementList.Remove(tempChild); } else { i++; } } foreach (sElementList temp in ElementList) { if (temp.Handle == hash) { if (temp.ParentHandle == 0) { //We are the root element temp.Node.OwnerDocument.ReplaceChild(temp.Node.OwnerDocument.ReadNode(xmlReader), temp.Node); temp.Node = temp.Node.OwnerDocument.DocumentElement /*.ParentNode*/; XmlRekursivImport(temp.TreeNode.Nodes, temp.Node.ChildNodes); } else { // Find parent foreach (sElementList tempParent in ElementList) { if (tempParent.Handle == temp.ParentHandle) { //Find with the old node, the childnode and replace it for (int i = 0; i < tempParent.Node.ChildNodes.Count; i++) { if (tempParent.Node.ChildNodes[i] == temp.Node) { if (node.Length == 0) // Delete node { tempParent.Node.RemoveChild(tempParent.Node.ChildNodes[i]); temp.TreeNode.Remove(); ElementList.Remove(temp); } else // Replace node { temp.Node = temp.Node.OwnerDocument.ReadNode(xmlReader); tempParent.Node.ReplaceChild(temp.Node, tempParent.Node.ChildNodes[i]); XmlRekursivImport(temp.TreeNode.Nodes, temp.Node.ChildNodes); } break; } } break; } } } break; } } }