为TreeView控件绑定XML文件
private void loadTreeRoot() //载入树根
{
this.tvXml.Nodes.Clear(); //清空TreeView的节点
XmlDocument dom = new XmlDocument(); //创建XMl文件对象
dom.Load(".\\book.xml"); //载入文件
XmlElement rootEle = dom.DocumentElement; //创建XML元素 DocumentElement即XML的第一个元素
TreeNode rootTree = new TreeNode(); //创建TreeView树节点
rootTree.Text = rootEle.Name;
rootTree.Tag = rootEle;
//xmlNode = rootEle;
TreeNode temp = new TreeNode("tempnode");
rootTree.Nodes.Add(temp); //添加树节点
this.tvXml.Nodes.Add(rootTree); //为相应的TreeView添加节点
}
private void showAll()
{
this.loadTreeRoot();
this.tvXml.Nodes[0].Nodes.Clear();
this.recursiveLoadXml(this.tvXml.Nodes[0]);
this.tvXml.ExpandAll();
}
private void recursiveLoadXml(TreeNode tNode)
{
XmlNode xNode = tNode.Tag as XmlNode;
foreach (XmlNode xmlChildNode in xNode.ChildNodes)
{
TreeNode childTNode = new TreeNode();
childTNode.Tag = xmlChildNode;
if (xmlChildNode.NodeType == XmlNodeType.Element)
{
childTNode.Text = xmlChildNode.Name;
if (tNode.Level == 0 && xmlChildNode.Attributes.Count > 0)
{
childTNode.Text += ":"
+ xmlChildNode.Attributes[0].Name + "-"
+ xmlChildNode.Attributes[0].Value;
}
tNode.Nodes.Add(childTNode);
this.recursiveLoadXml(childTNode);
}
else if (xmlChildNode.NodeType == XmlNodeType.Text)
{
childTNode.Text = xmlChildNode.Value ;
tNode.Nodes.Add(childTNode);
}
}
}
private void btnAddBook_Click(object sender, EventArgs e)
{
XmlDocument dom = new XmlDocument();
dom.Load(".\\book.xml");
//XmlNodeList xlst = dom.SelectNodes("book");
TreeNode seletedTNode = this.tvXml.SelectedNode;
if (seletedTNode == null)
{
MessageBox.Show("请选择要插入的位置!");
return;
}
XmlNode selectXNode = seletedTNode.Tag as XmlNode;
//XmlElement defXmlNode = XmlNode as XmlElement;
XmlElement newBook = selectXNode.OwnerDocument.CreateElement("book"); //创建XML元素
XmlAttribute newTitle = selectXNode.OwnerDocument.CreateAttribute("title");//创建XML属性
XmlElement newAuthor = selectXNode.OwnerDocument.CreateElement("author");
XmlElement newPrice = selectXNode.OwnerDocument.CreateElement("Price");
XmlText title = selectXNode.OwnerDocument.CreateTextNode("C#");
XmlText author = selectXNode.OwnerDocument.CreateTextNode("睿智汇海");
XmlText price = selectXNode.OwnerDocument.CreateTextNode("300");
//元素之间关联
newBook.Attributes.Append(newTitle); //为元素添加属性
newTitle.AppendChild(title); //为元素添加孩子节点
newBook.AppendChild(newAuthor);
newAuthor.AppendChild(author);
newBook.InsertAfter(newPrice,newAuthor);
newPrice.AppendChild(price);
foreach(XmlNode node in dom.DocumentElement.ChildNodes)
{
if (selectXNode.InnerText== node.InnerText)
{
selectXNode.ParentNode.InsertAfter(newBook, selectXNode);
selectXNode.OwnerDocument.Save(".\\book.xml"); //保存修改后的XML文件
}
}
this.showAll();
}
private void tvXml_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e)
{
this.btnDelete.Enabled = true;
this.btnModify.Enabled = true;
}
private void btnDelete_Click(object sender, EventArgs e)
{
TreeNode seletedTNode = this.tvXml.SelectedNode;
if (seletedTNode == null)
{
MessageBox.Show("请选择一个节点");
}
else
{
XmlNode xnode = seletedTNode.Tag as XmlNode;
xnode.ParentNode.RemoveChild(xnode);
xnode.OwnerDocument.Save(".\\book.xml");
this.showAll();
}
}
private void Form1_Load(object sender, EventArgs e)
{
this.showAll();
}
private void btnModify_Click(object sender, EventArgs e)
{
XmlDocument dom = new XmlDocument();
dom.Load(".\\book.xml");
TreeNode selectTNode = this.tvXml.SelectedNode;
if (selectTNode == null)
{
MessageBox.Show("请选择一个节点");
return;
}
XmlNode selectXNode = selectTNode.Tag as XmlNode;
foreach (XmlNode node in dom.DocumentElement.ChildNodes)
{
if (node.InnerText == selectXNode.ParentNode.ParentNode.InnerText)
{
foreach (XmlNode child in node.ChildNodes)
{
if(child.InnerText==selectXNode.InnerText)
child.InnerText = this.txtValue.Text;
}
dom.Save(".\\book.xml");
}
}
selectXNode.InnerText= this.txtValue.Text;
this.showAll();
}
private void tvXml_AfterSelect(object sender, TreeViewEventArgs e)
{
this.txtValue.Text = this.tvXml.SelectedNode.Text;
}

浙公网安备 33010602011771号