c# xml读写 操作 实例
已知有一个XML文件(bookstore.xml)如下:
<?xml version="1.0" encoding="gb2312"?>
<bookstore> <book genre="fantasy" ISBN="2-3631-4"> <title>Oberon's Legacy</title> <author>Corets, Eva</author> <price>5.95</price> </book> </bookstore> 1、往<bookstore>节点中插入一个<book>节点:
XmlDocument xmlDoc=new XmlDocument();
xmlDoc.Load("bookstore.xml"); XmlNode root=xmlDoc.SelectSingleNode("bookstore");//查找<bookstore>
XmlElement xe1=xmlDoc.CreateElement("book");//创建一个<book>节点 xe1.SetAttribute("genre","李赞红");//设置该节点genre属性 xe1.SetAttribute("ISBN","2-3631-4");//设置该节点ISBN属性 XmlElement xesub1=xmlDoc.CreateElement("title");
xesub1.InnerText="CS从入门到精通";//设置文本节点 xe1.AppendChild(xesub1);//添加到<book>节点中 XmlElement xesub2=xmlDoc.CreateElement("author"); xesub2.InnerText="候捷"; xe1.AppendChild(xesub2); XmlElement xesub3=xmlDoc.CreateElement("price"); xesub3.InnerText="58.3"; xe1.AppendChild(xesub3); root.AppendChild(xe1);//添加到<bookstore>节点中
xmlDoc.Save("bookstore.xml"); //===============================================
结果为:
<?xml version="1.0" encoding="gb2312"?>
<bookstore> <book genre="fantasy" ISBN="2-3631-4"> <title>Oberon's Legacy</title> <author>Corets, Eva</author> <price>5.95</price> </book> <book genre="李赞红" ISBN="2-3631-4"> <title>CS从入门到精通</title> <author>候捷</author> <price>58.3</price> </book> </bookstore> 2、修改节点:将genre属性值为“李赞红“的节点的genre值改为“update李赞红”,将该节点的子节点<author>的文本修改为“亚胜”。
XmlNodeList nodeList=xmlDoc.SelectSingleNode("bookstore").ChildNodes;//获取bookstore节点的所有子节点 //其实还可以使用这样的形式来查找某个节点 /* XmlDocument doc=new XmlDocument(); //其中a节点是二级点,cc是a下的三级节点 */ XmlElement xe=(XmlElement)xn;//将子节点类型转换为XmlElement类型 XmlNodeList nls=xe.ChildNodes;//继续获取xe子节点的所有子节点
foreach(XmlNode xn1 in nls)//遍历 { XmlElement xe2=(XmlElement)xn1;//转换类型 if(xe2.Name=="author")//如果找到 { xe2.InnerText="亚胜";//则修改 break;//找到退出来就可以了 } } break; } } xmlDoc.Save("bookstore.xml");//保存。
//==================================================
最后结果为:
<?xml version="1.0" encoding="gb2312"?>
<bookstore> <book genre="fantasy" ISBN="2-3631-4"> <title>Oberon's Legacy</title> <author>Corets, Eva</author> <price>5.95</price> </book> <book genre="update李赞红" ISBN="2-3631-4"> <title>CS从入门到精通</title> <author>亚胜</author> <price>58.3</price> </book> </bookstore> 3、删除 <book genre="fantasy" ISBN="2-3631-4">节点的genre属性,删除 <book genre="update李赞红" ISBN="2-3631-4">节点。
XmlNodeList xnl=xmlDoc.SelectSingleNode("bookstore").ChildNodes;
foreach(XmlNode xn in xnl)
{ XmlElement xe=(XmlElement)xn; if(xe.GetAttribute("genre")=="fantasy") { xe.RemoveAttribute("genre");//删除genre属性 } else if(xe.GetAttribute("genre")=="update李赞红") { xe.RemoveAll();//删除该节点的全部内容 } } xmlDoc.Save("bookstore.xml"); //===========================================
最后结果为: <?xml version="1.0" encoding="gb2312"?>
<bookstore> <book ISBN="2-3631-4"> <title>Oberon's Legacy</title> <author>Corets, Eva</author> <price>5.95</price> </book> <book> </book> </bookstore> 4、显示所有数据。
XmlNode xn=xmlDoc.SelectSingleNode("bookstore");
XmlNodeList xnl=xn.ChildNodes;
foreach(XmlNode xnf in xnl) { XmlElement xe=(XmlElement)xnf; Console.WriteLine(xe.GetAttribute("genre"));//显示属性值 Console.WriteLine(xe.GetAttribute("ISBN")); XmlNodeList xnf1=xe.ChildNodes; 以上文章转自 http://tb.blog.csdn.net/TrackBack.aspx?PostId=1630438
本文将会涉及3个方面的内容: while(reader.Read()) while(reader.Read()) Comment 使用<!—和-->分隔的注释 Document XML数据树的根节点 DocumentType 文档的类型声明,即<!DOCTYPE…>标记 Element 一个元素,通常是XML文件中的实际数据 在进行写入XML文件时我们使用的XmlTextWriter类,它是XmlWriter的子类,速度快且不使用缓存,但是同XmlTextReader一样,在写入XML文件时只能向前。 我们假定要写入的XML文件在C盘根目录下: XmlTextWriter writer = new XmlTextWriter("C:\\sample2.xml",null); 在这里如果不想把数据写入文件,而只是想在命令窗口显示,则可以把“Console.Out”作为参数传递给构造器,此时应把上述语句改为: XmlTextWriter writer = new XmlTextWriter(Console.Out); XmlTextWriter的常用方法 WriteEndDocument 使没有闭合元素闭合 writer.WriteEndDocument(); WriteEndElement 写元素的结束标志 writer.WriteEndElement(); WriteString 写入字符串 writer.WriteString("Pride And Prejudice"); 其中WriteString方法会对字符串进行下述处理: 1.字符“&”、“<”和“>”转化为“&”、“<”和“>”。 2.ASCII码为0~1F(十六进制)的字符转化为“�”~“F”。 3.如果是在写属性的值则双引号“””转化为“"”;单引号 “’”转化为“'”。
using System; writer = new XmlTextWriter (filename, null); //写XML声明 //引用样式 //Write the DocumentType node // genre 属性 //书名元素 //价格元素 //写入 CDATA //关闭根元素 //缓冲器内的内容写入文件
以上转自http://blog.csdn.net/JOHNCOOLS/archive/2006/06/15/800072.aspx |