XML文件的读取用XmlDocument和XmlReader的比较

来源:互联网 发布:vb与c语言的区别 编辑:程序博客网 时间:2024/05/16 18:39

XmlReader是基于数据流的,占用极少的内存,是只读方式的,所以速度极快.只能采用遍历的模式查找数据节点。

 XmlTextReader textReader = new XmlTextReader("C://myXmFile.xml");
            textReader.Read();
            // 节点非空则执行循环体
            while ( textReader.Read() )
            {
            // 读取第一个元素
            textReader.MoveToElement();
            Console.WriteLine("XmlTextReader Properties Test");
            Console.WriteLine("===================");
            // 读取该元素的属性并显示在控制台中
            Console.WriteLine("Name:"+ textReader.Name);
            Console.WriteLine("Base URI:" +textReader.BaseURI);
            Console.WriteLine("Local Name:"+ textReader.LocalName);
            Console.WriteLine("Attribute Count:"+ textReader.AttributeCount.ToString());
            Console.WriteLine("Depth:"+ textReader.Depth.ToString());
            Console.WriteLine("Line Number:" +textReader.LineNumber.ToString());
            Console.WriteLine("Node Type:"+ textReader.NodeType.ToString());
            Console.WriteLine("Attribute Count:" + textReader.Value.ToString());
            }

XmlDocument是基于树形结构的模型,数据保存于内存中,可以查找内存中数据的任何方面。占用内存大,处理方便,可读可写,几乎想当于一次把Xml读入内存.

xmldocument doc=new xmldocument();
   doc.load("config.xml");
   xmlnode xnuser=doc.selectsinglenode("userdata");
   string flag=xnuser.attributes["createuser"].innertext;

读取节点中的值
   xmldocument doc=new xmldocument();
   doc.load("config.xml");
   xmlnode xnserver = doc.selectsinglenode("userdata/dataconnection/server");

修改节点的属性
   xmldocument doc=new xmldocument();


   doc.load("config.xml");
   xmlnode xnuser=doc.selectsinglenode("userdata");
   xnuser.attributes["createuser"].innertext="false";
   doc.save("config.xml");

追加节点
   xmldocument doc = new xmldocument();
   xmltextreader reader = new xmltextreader("config.xml");
   doc.load("config.xml");
   xmlelement root = doc.documentelement; // 获取根节点
   xmlelement tagmessage = doc.createelement("net");
   xmlelement tagtext = doc.createelement("name");
   tagtext.innertext  = netname;
   tagmessage.appendchild(tagtext);   // 追加到 xml 文本的最后面
   root.appendchild(tagmessage);
   reader.close();     // 关闭 xmltextreader
   doc.save("config.xml");     // 保存 xml 文件

所以:
如果数据量极大,用XmlReader合适,
如果处理复杂频繁且文件不大,XmlDocument合适。
 

原创粉丝点击