基于DOM的XML文档读写
2012年3月22日 天气 下雨 何来晴日,都下了快两个月雨了,春雨绵绵,也不用这样吧!
//基于DOM的XML文档读写
using System;
using System.Collections.Generic;using System.Text;
using System.Xml;
namespace xml读写
{
class Program
{
static void Main(string[] args)
{
//基于DOM读写XML
//创建一个xml文档
XmlDocument xdoc = new XmlDocument();
//装载你想要用的文档
xdoc.Load("students.xml");
//遍历xml的所有节点
XmlElement xe = xdoc.DocumentElement;
bianliList(xe);
//创建一个节点
createNode(xdoc);
//更新节点
updateNode(xe);
Console.WriteLine("------------------------------------------------");
deleteNode(xe);
bianliList(xe);
//保存修改的值
xdoc.Save("students.xml");//每次修改的值,都是在内存上的,需要保存到硬盘
Console.ReadKey();
}
//遍历所有节点
static void bianliList(XmlNode xe)
{
//判断是否含有子节点
if (xe.HasChildNodes)
{
//遍历所有子节点
for (int i = 0; i < xe.ChildNodes.Count; i++)
{
XmlNode xe1 = xe.ChildNodes[i];
bianliList(xe1);//递归调用遍历所有节点
}
}
else
{
Console.WriteLine(xe.Value);//输出节点的值
}
}
//删除节点(删除名字为花七的address节点)
static void deleteNode(XmlElement xe)
{
XmlNode xx;
for (int i = 0; i < xe.ChildNodes.Count; i++)
{
foreach (XmlNode xn in xe.ChildNodes[i].ChildNodes)
{
if (xn.Name == "name")
{
if (xn.InnerText == "花七")//找到目标
{
xx = xn.ParentNode;//得到他的父节点
for (int j = 0; j < xx.ChildNodes.Count; j++)
{
if (xx.ChildNodes[j].Name == "address")
{
xx.RemoveChild(xx.ChildNodes[j]);//删除该节点
return;
}
}
}
}
}
}
}
//更新文档节点
static void updateNode(XmlElement xe)
{
for (int i = 0; i < xe.ChildNodes.Count; i++)
{
foreach (XmlNode xn in xe.ChildNodes[i].ChildNodes)
{
if (xn.Name == "sex")
{
if (xn.InnerText == "男")
{
xn.InnerText = "女";//修改他的值
}
else
xn.InnerText = "男";
}
}
}
}
//给文档创建节点
static void createNode(XmlDocument xdoc)
{
XmlElement xe1 = xdoc.CreateElement("student");//创建元素节点
XmlElement xea1 = xdoc.CreateElement("name");
XmlElement xea2 = xdoc.CreateElement("id");
XmlElement xea3 = xdoc.CreateElement("sex");
XmlElement xea4 = xdoc.CreateElement("address");
XmlText xet1 = xdoc.CreateTextNode("小三");//创建文本节点
XmlText xet2 = xdoc.CreateTextNode("0100");
XmlText xet3 = xdoc.CreateTextNode("女");
XmlText xet4 = xdoc.CreateTextNode("湖南长沙");
xea1.AppendChild(xet1);
xea2.AppendChild(xet2);
xea3.AppendChild(xet3);
xea4.AppendChild(xet4);
xe1.AppendChild(xea1);
xe1.AppendChild(xea2);
xe1.AppendChild(xea3);
xe1.AppendChild(xea4);
XmlElement xe = xdoc.DocumentElement;
xe.AppendChild(xe1);//赋加到树上
}
}
}
浙公网安备 33010602011771号