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合适。