C#操作xml

2009年4月22日星期三

C#操作xml

引用命名空间:using System.Xml


1.检查所要操作的xml文件是否存在:
System.IO.File.Exists(文件路径及名称);


2.得到xml文件:
(1)在asp.net中可以这样得到:
XmlDocument xmlDoc = new XmlDocument();


//导入xml文档


xmlDoc.Load( Server.MapPath("xmlTesting.xml"));


//导入字符串


//xmlDoc.LoadXml("<bookStore> <book id="01" price="3.5元"> 读者</book></bookStore>");


注:Server.MapPath("xmlTesting.xml")此时的xmlTesting.xml文件必须是在当前的解决方案里;同样可以写成完整的物理路径xmlDoc.Load (@"E:"软件学习"测试"myNoteWeb"xmlTesting.xml")


(2)在windForm中 直接用物理路径得到所要操作的xml文件具体实现方法同上
3.创建xml文件:
XmlDocument xmlDoc = new XmlDocument(); //创建xml文档(实例化一个xml)


XmlNode root = xmlDoc.CreateElement("bookStore");//创建根节点


//创建第1个子结点:


XmlNode bookNode = xmlDoc.CreateElement("book");


bookNode.InnerText = "读者";


//为此节点添加属性


法1:


bookPublishNode.SetAttribute("id", "01")


root.AppendChild(bookNode);


法2:


XmlAttribute xmlattribute = tempXmlDoc.CreateAttribute("price");


xmlattribute.Value = "3.5元";


tempRoot .Attributes .Append (xmlattribute )


//创建第2个根节点的子结点:


XmlNode tempBookNode = xmlDoc.CreateElement("tempbook ");


tempBookNode.InnerText ="文摘";


root.AppendChild(tempBookNode);


xmlDoc.AppendChild(root); //将根节点添加到xml文档中


try


{


xmlDoc.save(“bookInfo.xml”);//xml将保存到当前解决方案的目录下


}


catch (Exception ex)


{


MessageBox.Show(ex.Message); //显示错误信息


}


得到的xml文档如下:


<?xml version="1.0" encoding="utf-8" ?>


<bookStore>


<book id ="01" price="3.5元">


读者


</book>


 


<tempbook id ="02">


文摘


</tempbook >


 


</bookStore>


4.读取,修改xml信息
tempTesting.xml文件的内容如下:


?<?xml version="1.0" encoding="utf-8"?>


<bookStore>


<book id="01" price="3.5元">


读者


</book>


<book id="02" price="5元">


<bookname>百家讲坛</bookname>


<bookpublish>文学出版社</bookpublish>


</book>


<tempbook id="0000">漫画tempbook>


 


</bookStore>


(1) 得到xml文件的xml信息
XmlDocument xmlDoc = new XmlDocument();


xmlDoc.Load( Server.MapPath("xmlTesting.xml"));


XmlNode root=xmlDoc.DocumentElement;


(2) 得到节点
//得到id为2book节点下的所有节点


XmlNodeList xmlNodes = root.SelectNodes("//book[@id='02']//*");


XmlNode tempNode = xmlNodes[0];//得到第一个节点


//将tempbook强制转化为XmlElement


XmlElement xmlelement = (XmlElement)root.SelectSingleNode("tempbook");


(3) 修改节点内容
XmlNode tempBook = root.SelectSingleNode("tempbook");//修改节点内容


tempBook. InnerText="漫画";


(4)得到节点的属性值并修改:
//得到节点的属性


//法1


XmlAttributeCollection attrbute= tempBook.Attributes;


string bookID = attrbute[0].Value;


//法2:


string bookid = tempBook.Attributes[0].Value.ToString();


//修改节点属性的值


tempBook.Attributes[0].Value = "0000";


(5)添加一个根节点


 


XmlNode node = xmlDoc.CreateElement("testing");


node.InnerText = "testing";


root.AppendChild(node);


(6)保存修改后的文档
xmlDoc.Save(Server.MapPath("tempTesting.xml"));


******其他:


(一)显示xml信息
1以xml文档的样式显示:xmlDoc.outerxml;


2.显示各个节点


XmlNode root = xmlDoc.DocumentElement;//得到根节点:


if (root.ChildNodes.Count > 0)


{


XmlNode xmlnode = root.FirstChild;//得到子结点:


for (int i = 0; i < root.ChildNodes.Count; i++)


{


MessageBox.Show(xmlnode.FirstChild .InnerText);


xmlnode = xmlnode.NextSibling;或mlNode subNode2 = root.LastChild;


}


}


else


MessageBox.Show("没有内容!");


(二)将数据库的信息导入为xml
XmlDocument xmlDocItem = new XmlDocument();


DataSet ds = GetDataSet(strtsql);//调用方法从数据库中得到DataSet。


xmlDocItem.LoadXml(ds .GetXml ());//导入xml中;


*****************************以下是在网络上找到的关于C#操作xml文件的总结***


一:创建并保存xml文件
string FileName =Application.StartupPath+"""phone.xml";


XmlTextWriter objXmlTextWriter = new XmlTextWriter(FileName,Encoding.Default);


 


objXmlTextWriter.Formatting = Formatting.Indented;


objXmlTextWriter.Indentation = 6;


objXmlTextWriter.WriteStartDocument();


objXmlTextWriter.WriteStartElement("", "PhoneBook", "");


objXmlTextWriter.WriteStartElement("", "Name", "");


objXmlTextWriter.WriteString("加菲尔德");


objXmlTextWriter.WriteEndElement();


objXmlTextWriter.WriteStartElement("", "Number", "");


objXmlTextWriter.WriteString("5555555");


objXmlTextWriter.WriteEndElement();


objXmlTextWriter.WriteStartElement("", "City", "");


objXmlTextWriter.WriteString("纽约");


objXmlTextWriter.WriteEndElement();


objXmlTextWriter.WriteStartElement("", "DateOfBirth", "");


objXmlTextWriter.WriteString("26/10/1978");


objXmlTextWriter.WriteEndElement();


objXmlTextWriter.WriteEndElement();


objXmlTextWriter.WriteEndDocument();


objXmlTextWriter.Flush();


objXmlTextWriter.Close();


这段代码在win2003ser+vs2005环境下测试通过,出来的效果很好,也比较容易理解,我一般就是用这段代码创建XML文件。


二、读取、修改XML文件的某个节点的值
string path = "phone.xml";


XmlDocument doc = new XmlDocument();


doc.Load(path);


//读所有节点表


XmlNamespaceManager xnm = new XmlNamespaceManager(doc.NameTable);


//读取节点值


XmlNode node = doc.SelectSingleNode("/PhoneBook/Name", xnm); //node.InnerText 就是读取出来的值


//修改节点值


node.InnerText="要修改的内容";


//保存修改后的内容


doc.Save(path);


总结:在.net中using System.Xml命名空间下中有很多类和方法,我们可以在用到时在网络或是msdn中查到相关的信息和实例


0 评论:

发表评论