基于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);//赋加到树上
}
}
}
//基于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);//赋加到树上
}
}
}
相关文章推荐
- 基于DOM的XML文档读写
- PHP基于DOM创建xml文档的方法示例
- 自己写的读写XML文档 DOM
- DOM生成和XML文档解析
- Java使用DOM方式读写XML
- 【XML解析】(1)Java下使用JAXP中的DOM解析方式对XML文档进行解析
- 基于PHP与XML的PDF文档生成技术
- xml文档,dom树的增删改查
- Java中Dom解析xml文档
- Java使用DOM读写XML
- dom4j读写xml文档实例
- Java解析XML文档——dom解析xml
- dom方式读写xml实例
- C#操作Xml:通过XmlDocument读写Xml文档
- JAVASCRIPT中使用DOM操作XML文档
- 使用DOM来解析XML文档
- python通过dom生成XML文档
- 基于Dom 的解析xml 工具类 XmlManager
- .NET基础加强第五天(xml文档dom)
- XML文档解析之DOM解析