您的位置:首页 > 其它

基于DOM的XML文档读写

2012-03-22 20:10 344 查看
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);//赋加到树上

}

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: