以文本方式查看主题

-  W3CHINA.ORG讨论区 - 语义网·描述逻辑·本体·RDF·OWL  (http://bbs.xml.org.cn/index.asp)
--  『 XML基础 』  (http://bbs.xml.org.cn/list.asp?boardid=1)
----  [原创]C# XML生成方法总结  (http://bbs.xml.org.cn/dispbbs.asp?boardid=1&rootid=&id=69157)


--  作者:pumaboyd
--  发布时间:11/5/2008 11:14:00 PM

--  [原创]C# XML生成方法总结
因为最近XML的工作比较多,而且提供给客户的XML变化多。所以就总结的一些平时自己在ASP.NET中生成XML用到的一些方式:

StringBuild拼接
不用多说这是最原始的方式,原始的好处就是你控制的很多。不好的地方就是,你写多了这些控制你就烦了,而且容易出错。

DataSet方法
这是我最喜欢的方式,但如果格式是客户定义的,这种方法就非常不方便。我们假定格式是自己定义。你基本上只有使用DataSet.ReadXml 和DataSet.WriteXml 这两个方法就可以了。大文件处理不适合。

XML序列化
通过XmlSerializer对定义好的C#对象,直接序列化成XML文件。我个人不太喜欢这样的方式,我觉得对于如果只是想输出一个XML文件给对方,如果用这种方式会复杂化。而且明显学习的成本很高,你需要对实体的定义很清晰,而且用户的需求可能会把一个可以简单的方式因为使用了这种方式反而复杂化了。大文件处理不适合。

XMLTextWrite方式
这个方式很提倡,即考虑到开发的灵活和简单,又简化了很多判断。比如对XML特殊字符的替换。你不要关心这些,通过XmlTextWrite去创建的XML会自动过滤XML非法字符。
Copy的一段实例:
XmlTextWriter wr = new XmlTextWriter("mytest.xml",Encoding.UTF8);
wr.WriteStartDocument();
wr.Formatting = Formatting.Indented;
wr.WriteStartElement("Team");
wr.WriteStartElement("player");
wr.WriteAttributeString("Name", "George Zip'\"");
wr.WriteAttributeString("Position", "QB");
wr.WriteElementString("Nickname", "Zippy&&'<>\”");
wr.WriteStartElement(”test”);
wr.WriteCData(”sssssdfsdfsdfsdfs7777&&&”);
wr.WriteEndElement();
wr.WriteEndElement();
wr.WriteEndElement();
wr.WriteEndDocument();
wr.Close();


--  作者:hexun831012
--  发布时间:11/6/2008 3:48:00 PM

--  
唉,说了3个,都不在点子上
最好的方式使用XmlWriter,XmlTextWriter其实并不推荐,第一,它超越了标准,第二,它不是2.0+的推荐方式,要创建XmlWriter需要用静态的Create()方法,别的不多说。
W 3 C h i n a ( since 2003 ) 旗 下 站 点
苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
50.781ms