C#操作XML很是方便,有人说是前所未有的方便,这个我可不知道,以前没用过别的语言操作过XML![](https://www.cnblogs.com/CuteSoft_Client/CuteEditor/images/emsmilep.gif)
最近做的项目,操作了几次XML,把心得写下来吧!
创建XML的话有两个类可以用,一个是XMLTextWriter,一个是XMLDocument,两者都属System.XML名下所有。
我个人创建的话比较偏爱XMLTextWriter,它以只进方式创建,想来性能应该提高不是一点半点的。而XMLDocument则可以直接操作XML文档,用起来方便,但是性能方面也就相对差了些。我修改XML习惯用XMLDocument,它结合XPath想起来还是够无敌滴
。
-、XMLTextWriter用法
二、XMLDocument用法
另外读取的话,用XMLTextReader很方式,也是只进读取,性能据说比较OK!
三、XMLTextReader用法
另外,XML的一个应用是序列化,要用到把字符串转化成byte数组,方法:
byte[] bytes = System.Text.UTF8Encoding.UTF8.GetBytes(XmlContent);
相对的,把byte数组转化为字符串的方法则为:
string XmlContent = System.Text.UTFEncoding.UTF8.GetString(bytes);
这样方便了吧,把想存的东东转化为byte数组,然后压缩一下,网络传输的话也应该很OK了吧![](https://www.cnblogs.com/CuteSoft_Client/CuteEditor/images/face20.gif)
![](https://www.cnblogs.com/CuteSoft_Client/CuteEditor/images/emsmilep.gif)
最近做的项目,操作了几次XML,把心得写下来吧!
创建XML的话有两个类可以用,一个是XMLTextWriter,一个是XMLDocument,两者都属System.XML名下所有。
我个人创建的话比较偏爱XMLTextWriter,它以只进方式创建,想来性能应该提高不是一点半点的。而XMLDocument则可以直接操作XML文档,用起来方便,但是性能方面也就相对差了些。我修改XML习惯用XMLDocument,它结合XPath想起来还是够无敌滴
![](https://www.cnblogs.com/CuteSoft_Client/CuteEditor/images/emwink.gif)
-、XMLTextWriter用法
1 using (System.IO.MemoryStream stream = new System.IO.MemoryStream())
2 {
3 System.Xml.XmlTextWriter writer = new System.Xml.XmlTextWriter(stream,null);
4 writer.Formatting = System.Xml.Formatting.Indented;
5 writer.WriteStartDocument(true);
6
7 writer.WriteStartElement("PP");
8 writer.WriteStartElement("X");
9 writer.WriteString("1");
10 writer.WriteEndElement();
11 writer.WriteStartElement("Y");
12 writer.WriteString("1");
13 writer.WriteEndElement();
14 writer.WriteStartElement("Name");
15 writer.WriteString("fan");
16 writer.WriteEndElement();
17 writer.WriteEndElement();
18 writer.Flush();
19 writer.Close();
20 }
2 {
3 System.Xml.XmlTextWriter writer = new System.Xml.XmlTextWriter(stream,null);
4 writer.Formatting = System.Xml.Formatting.Indented;
5 writer.WriteStartDocument(true);
6
7 writer.WriteStartElement("PP");
8 writer.WriteStartElement("X");
9 writer.WriteString("1");
10 writer.WriteEndElement();
11 writer.WriteStartElement("Y");
12 writer.WriteString("1");
13 writer.WriteEndElement();
14 writer.WriteStartElement("Name");
15 writer.WriteString("fan");
16 writer.WriteEndElement();
17 writer.WriteEndElement();
18 writer.Flush();
19 writer.Close();
20 }
二、XMLDocument用法
1 System.Xml.XmlDocument xmldoc = new XmlDocument();
2 //加入XML的声明段落,<?xml version="1.0" encoding="gb2312"?>
3 System.Xml.XmlDeclaration xmldecl;
4 xmldecl = xmldoc.CreateXmlDeclaration("1.0", "gb2312", null);
5 xmldoc.AppendChild(xmldecl);
6
7 //加入一个根元素
8 System.Xml.XmlElement xmlelem = xmldoc.CreateElement("", "Employees", "");
9 xmldoc.AppendChild(xmlelem);
10 //您还可以自己添加子节点,过程有点无聊啊:(
2 //加入XML的声明段落,<?xml version="1.0" encoding="gb2312"?>
3 System.Xml.XmlDeclaration xmldecl;
4 xmldecl = xmldoc.CreateXmlDeclaration("1.0", "gb2312", null);
5 xmldoc.AppendChild(xmldecl);
6
7 //加入一个根元素
8 System.Xml.XmlElement xmlelem = xmldoc.CreateElement("", "Employees", "");
9 xmldoc.AppendChild(xmlelem);
10 //您还可以自己添加子节点,过程有点无聊啊:(
另外读取的话,用XMLTextReader很方式,也是只进读取,性能据说比较OK!
三、XMLTextReader用法
1 byte[] bytes = System.Text.UTF8Encoding.UTF8.GetBytes(XmlContent);
2 using (System.IO.MemoryStream stream = new System.IO.MemoryStream(bytes))
3 {
4 using (XmlTextReader reader = new XmlTextReader(stream))
5 {
6 while (reader.Read())
7 {
8 if (!reader.IsEmptyElement && reader.NodeType == XmlNodeType.Element)
9 {
10 switch (reader.LocalName)
11 {
12 case "X":
13 tager.X = reader.ReadString();
14 break;
15 }
16
17 }
18
19 }
20 }
21 }
2 using (System.IO.MemoryStream stream = new System.IO.MemoryStream(bytes))
3 {
4 using (XmlTextReader reader = new XmlTextReader(stream))
5 {
6 while (reader.Read())
7 {
8 if (!reader.IsEmptyElement && reader.NodeType == XmlNodeType.Element)
9 {
10 switch (reader.LocalName)
11 {
12 case "X":
13 tager.X = reader.ReadString();
14 break;
15 }
16
17 }
18
19 }
20 }
21 }
另外,XML的一个应用是序列化,要用到把字符串转化成byte数组,方法:
byte[] bytes = System.Text.UTF8Encoding.UTF8.GetBytes(XmlContent);
相对的,把byte数组转化为字符串的方法则为:
string XmlContent = System.Text.UTFEncoding.UTF8.GetString(bytes);
这样方便了吧,把想存的东东转化为byte数组,然后压缩一下,网络传输的话也应该很OK了吧
![](https://www.cnblogs.com/CuteSoft_Client/CuteEditor/images/face20.gif)