在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
在AJAX的响应数据处理中XML格式是将XML文档作为数据内容返回给客户端来进行处理。问题是服务端程序是如何将数据生成XML格式文档文件的,XML文档是如何操作里面的内容呢? 程序生成XML文档这种方式是用 C# 程序生成一个 XML 文件,并将数据放在其中来处理。下面是几种不同的方法实现了同样的目的。 用XmlWriter类编辑数据而实现的简单示例: XmlTextWriter xtw = new XmlTextWriter(filePath, Encoding.UTF8); xtw.Formatting = Formatting.Indented; xtw.WriteStartDocument(true); xtw.WriteStartElement("root"); xtw.WriteElementString("username", Nodevalue); xtw.WriteEndElement(); xtw.WriteEndDocument(); xtw.Flush(); xtw.Close(); 在示例代码中,Nodevalue 为所取得的数据值,代码略。filePath 为XML文件路径值,代码略。 运行结果是生成了一个内容与之前的那篇贴文一样的 XML 文档。 用XmlDocument类实现的示例: XmlDocument xmldoc; XmlDeclaration xmldecl; XmlNode xmlnode; XmlElement xmlelem; xmldoc = new XmlDocument(); xmldecl = xmldoc.CreateXmlDeclaration("1.0", "gb2312", null); xmldoc.AppendChild(xmldecl); xmlelem = xmldoc.CreateElement("", "root", ""); xmldoc.AppendChild(xmlelem); xmlnode = xmldoc.CreateElement("username"); xmlnode.InnerText = Nodevalue; xmlelem.AppendChild(xmlnode); xmldoc.Save(filePath); 注意:因为XmlDocument类实现的话,与XmlWriter类实现相比,在性能上较低效些。所以推荐用XmlWriter类来实现。 用XML序列化的技术来实现: Root root = new Root(); root.Username = Nodevalue; XmlSerializer srl = new XmlSerializer(typeof(Root)); StreamWriter wrt = new StreamWriter(filePath); srl.Serialize(wrt, root); wrt.Close(); 下面是Root类的完整内容: using System; public class Root { private string _username; public string Username { get { return _username; } set { _username = value; } } } 对已有的XML文档进行操作如果是对已有的XML文档文件进行操作处理,而不是用程序来生成一个新的XML文档文件呢?下面的示例是C#编程代码部分片断: XmlDocument xmldoc = new XmlDocument(); xmldoc.Load(filePath); XmlNodeList xmlnodelist = xmldoc.SelectSingleNode("Root").ChildNodes; foreach (XmlNode xmlnode in xmlnodelist) { while (xmlnode.Name == "Username") { xmlnode.InnerText = Nodevalue; break; } } xmldoc.Save(filePath); 代码是对已有XML文件进行操作处理的,那么,可以看看下面是类的构造方法中的程序示例: if (File.Exists(filePath)) { XmlOperateHandle(); } else { XmlWriterHandle(); } 为了改进程序的性能,那我们用XPathNavigator对象处理来修改重写: XmlDocument xmldoc = new XmlDocument(); try { xmldoc.Load(filePath); } catch { } XPathNavigator navigator = xmldoc.CreateNavigator(); navigator.MoveToRoot(); if(navigator.HasChildren) { navigator.MoveToFirstChild(); if (navigator.Name == "username") { navigator.InnerXml = Nodevalue; } } Ajax系列blog文章: |
请发表评论