C#操作XML很是方便,有人说是前所未有的方便,这个我可不知道,以前没用过别的语言操作过XML
  最近做的项目,操作了几次XML,把心得写下来吧!
  创建XML的话有两个类可以用,一个是XMLTextWriter,一个是XMLDocument,两者都属System.XML名下所有。
我个人创建的话比较偏爱XMLTextWriter,它以只进方式创建,想来性能应该提高不是一点半点的。而XMLDocument则可以直接操作XML文档,用起来方便,但是性能方面也就相对差了些。我修改XML习惯用XMLDocument,它结合XPath想起来还是够无敌滴
  -、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             }

   二、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 //您还可以自己添加子节点,过程有点无聊啊:(

  另外读取的话,用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             }

  另外,XML的一个应用是序列化,要用到把字符串转化成byte数组,方法:
      byte[] bytes = System.Text.UTF8Encoding.UTF8.GetBytes(XmlContent);
     相对的,把byte数组转化为字符串的方法则为:
   string XmlContent = System.Text.UTFEncoding.UTF8.GetString(bytes);
  这样方便了吧,把想存的东东转化为byte数组,然后压缩一下,网络传输的话也应该很OK了吧

posted on 2007-01-17 20:16  Evilbaniry  阅读(1541)  评论(2编辑  收藏  举报