`
javatoyou
  • 浏览: 1022172 次
  • 性别: Icon_minigender_2
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

ASP.NET中动态生成Xml格式文档,并转换为HTML文件

 
阅读更多
  1. 程序实现功能:
  2. 1.读取数据,点解“获取”按钮动态生成XML格式的文档,并把生成的文档放在TEXTBOX或者生成一个XML文件。
  3. 2.点击“浏览”按钮,把获取到的XML格式文档,转换成HTML,在浏览器中显示。
  4. 首先在ASPX对应的CS文件中引入usingSystem.Xml;
  5. intm=0;intloop=0;
  6. //根据指定的获取深度DEPTH获取用于生成XML文档的数据
  7. privateintinitData(string[]parent,string[]guid,string[]path,string[]name,ChannelCollectioncc,intdepth)
  8. {
  9. foreach(Channelchannelincc)
  10. {
  11. parent[m]=channel.Parent.Guid;
  12. guid[m]=channel.Guid;
  13. path[m]=channel.Path;
  14. name[m]=channel.Name;
  15. m=m+1;
  16. if(channel.Channels.Count!=0&&loop<depth)
  17. {
  18. ChannelCollectionc=channel.Channels;
  19. ++loop;
  20. initData(parent,guid,path,name,c,depth);
  21. }
  22. }
  23. returnm;
  24. }
  25. //点击“获取XML内容“按钮执行的事件
  26. protectedvoidButtonGetXml_Click(objectsender,EventArgse)
  27. {
  28. ChannelCollectioncc=selectedChannel.Channels;
  29. string[]parent=newstring[1000];
  30. string[]guid=newstring[1000];
  31. string[]path=newstring[1000];
  32. string[]style=newstring[1000];
  33. string[]name=newstring[1000];
  34. inti=0;
  35. intdepth=int.Parse(DropDownListGetDepth.SelectedValue);
  36. //根据指定的获取深度DEPTH获取用于生成XML文档的数据
  37. i=initData(parent,guid,path,name,cc,depth);
  38. //创建XML文档对象
  39. document=newXmlDocument();
  40. //创建XML节点元素
  41. XmlElementchannelsElement=document.CreateElement("Channels");
  42. document.AppendChild(channelsElement);
  43. for(intk=1;k<=i;k++)
  44. {
  45. channelsElement.AppendChild(document.CreateElement("CHANNEL"));
  46. }
  47. //根据元素节点名获取元素节点
  48. XmlNodeListnodelist=document.GetElementsByTagName("CHANNEL");
  49. intsize=nodelist.Count;
  50. for(intk=0;k<size;k++)
  51. {
  52. XmlNodenode=nodelist.Item(k);
  53. XmlElementelementNode=(XmlElement)node;
  54. //elementNode.SetAttribute("guid",guid[k]);设置元素属性
  55. elementNode.AppendChild(document.CreateElement("PARENT"));
  56. elementNode.AppendChild(document.CreateElement("GUID"));
  57. elementNode.AppendChild(document.CreateElement("PATH"));
  58. elementNode.AppendChild(document.CreateElement("NAME"));
  59. }
  60. XmlNodeListnodelistParent=document.GetElementsByTagName("PARENT");
  61. intsizeParent=nodelistParent.Count;
  62. for(intk=0;k<sizeParent;k++)
  63. {
  64. XmlNodenode=nodelistParent.Item(k);
  65. XmlElementelementNode=(XmlElement)node;
  66. //用初始化后的数据生成对应元素节点的文本节点
  67. elementNode.AppendChild(document.CreateTextNode(parent[k]));
  68. }
  69. XmlNodeListnodelistGuid=document.GetElementsByTagName("GUID");
  70. intsizeGuid=nodelistGuid.Count;
  71. for(intk=0;k<sizeGuid;k++)
  72. {
  73. XmlNodenode=nodelistGuid.Item(k);
  74. XmlElementelementNode=(XmlElement)node;
  75. elementNode.AppendChild(document.CreateTextNode(guid[k]));
  76. }
  77. XmlNodeListnodelistPath=document.GetElementsByTagName("PATH");
  78. intsizePath=nodelistPath.Count;
  79. for(intk=0;k<sizePath;k++)
  80. {
  81. XmlNodenode=nodelistPath.Item(k);
  82. XmlElementelementNode=(XmlElement)node;
  83. elementNode.AppendChild(document.CreateTextNode(path[k]));
  84. }
  85. XmlNodeListnodelistName=document.GetElementsByTagName("NAME");
  86. intsizeName=nodelistName.Count;
  87. for(intk=0;k<sizeName;k++)
  88. {
  89. XmlNodenode=nodelistName.Item(k);
  90. XmlElementelementNode=(XmlElement)node;
  91. elementNode.AppendChild(document.CreateTextNode(name[k]));
  92. }
  93. //document.Save("/icbc/newxml.xml");//可以保存为XML文件,位置在C:/icbc/newxml.xml
  94. //创建用于保存内容的字符串里
  95. StringBuildersb=newStringBuilder();
  96. //输出流指向字符串
  97. XmlWriterwriter=XmlWriter.Create(sb);
  98. //XML文档把内容写到字符串里
  99. document.WriteContentTo(writer);
  100. writer.Flush();
  101. //让页面中的文本框显示XML文档内容
  102. TextBoxContent.Text=sb.ToString();
  103. }
  104. //点击”预览“按钮,转到XML生成HTML的页面
  105. protectedvoidButtonYuLAN_Click(objectsender,EventArgse)
  106. {
  107. //XmlDocumentxml=newXmlDocument();
  108. if(TextBoxContent.Text==null||TextBoxContent.Text=="")
  109. {
  110. Response.Write("<script>alert('请先点击获取内容');</script>");
  111. return;
  112. }
  113. Session["xmlTextBoxContent"]=TextBoxContent.Text;
  114. Response.Write("<script>window.open('PreExploerXMLMenu.aspx')</script>");
  115. }
  116. //'PreExploerXMLMenu.aspx.CS的内容如下
  117. usingSystem;
  118. usingSystem.Data;
  119. usingSystem.Configuration;
  120. usingSystem.Collections;
  121. usingSystem.Web;
  122. usingSystem.Web.Security;
  123. usingSystem.Web.UI;
  124. usingSystem.Web.UI.WebControls;
  125. usingSystem.Web.UI.WebControls.WebParts;
  126. usingSystem.Web.UI.HtmlControls;
  127. usingSystem.Xml;
  128. usingSystem.IO;
  129. usingSystem.Text;
  130. publicpartialclassModule_ChannelInfoManage_PreExploerXMLMenu:System.Web.UI.Page
  131. {
  132. protectedvoidPage_Load(objectsender,EventArgse)
  133. {
  134. //创建XmlDisplay类的实例
  135. XmlDisplayXmlDisplayDemo=newXmlDisplay();
  136. //得到XML内容,申明为字符串用于生成StringReader
  137. stringxmlcontent=(string)Session["xmlTextBoxContent"];
  138. //生成在网页上保留静态文本的位置
  139. LiteralLT=newLiteral();
  140. LT.Text=XmlDisplayDemo.LoadDocument(newStringReader(xmlcontent));
  141. this.Panel1.Controls.Add(LT);
  142. }
  143. //这个类读入并处理XML文件
  144. publicclassXmlDisplay
  145. {
  146. publicstringLoadDocument(StringReadersr)
  147. {
  148. XmlReaderxmlReader=null;
  149. StringBuilderhtml=newStringBuilder();
  150. try
  151. {
  152. //创建XMLTextReader的实例。
  153. xmlReader=XmlReader.Create(sr);
  154. //处理XML文件
  155. html.Append(ProcessXml(xmlReader));
  156. }
  157. catch(XmlExceptionex)
  158. {
  159. html.Append("发生一个XML异常:"+ex.ToString());
  160. }
  161. catch(Exceptionex)
  162. {
  163. html.Append("发生一个普通异常:"+ex.ToString());
  164. }
  165. finally
  166. {
  167. if(xmlReader!=null)
  168. xmlReader.Close();
  169. }
  170. returnhtml.ToString();
  171. }
  172. //处理XML数据的方法,用于控制生成HTML文件的格式
  173. privatestringProcessXml(XmlReaderxmlReader)
  174. {
  175. StringBuildertemp=newStringBuilder();
  176. inti=1;
  177. temp.Append("<tableborder=1>");
  178. //XML读取器找到”NAME“的标记元素
  179. xmlReader.ReadToFollowing("NAME");
  180. do{
  181. if(i==1)temp.Append("<tr>");
  182. temp.Append("<td>");
  183. //xml读取器的位置向前移动,指到文本元素内容
  184. xmlReader.Read();
  185. //读取文本元素内容到字符串中
  186. temp.Append(xmlReader.Value);
  187. temp.Append("</td>");
  188. //一行显示10列数据
  189. if((i%10==0))temp.Append("</tr><tr>");
  190. i++;
  191. }while(xmlReader.ReadToFollowing("NAME"));
  192. temp.Append("</tr></table>");
  193. returntemp.ToString();
  194. }//结束ProcessXML方法
  195. }
  196. }
  197. 来源:aaronbai的blog
分享到:
评论

相关推荐

    asp.net知识库

    Asp.Net(C#)利用XPath解析XML文档示例 XSL .Net框架下的XSLT转换技术简介 一个XSLT的简单例子 XSLXSLT板主题整理 xsl入门的好文章 新手学习XSL的好东西 XSL语法介绍 XSL学习心得 - 调用属性值 XSLT与XML转换的详细...

    ASP.NET4高级程序设计第4版 带目录PDF 分卷压缩包 part1

    ASP.NET 4高级程序设计(第4版)》【原版书为:Pro ASP.NET 4 in C# 2010】是ASP.NET领域的鸿篇巨制,全面讲解了ASP.NET4的各种特性及其背后的工作原理,并给出了许多针对如何构建复杂、可扩展的网站从实践中得出的...

    ASP.NET4高级程序设计(第4版) 3/3

     《ASP.NET 4高级程序设计(第4版)》是ASP.NET领域的鸿篇巨制,全面讲解了ASP.NET4的各种特性及其背后的工作原理,并给出了许多针对如何构建复杂、可扩展的网站从实践中得出的建议。书中还深入讲述了其他ASP.NET图书...

    ASP.NET 3.5 开发大全

    14.2.2 创建XML文档 14.2.3 XML控件 14.2.4 XML文件读取类(XmlTextReader) 14.2.5 XML文件编写类(XmlTextWriter) 14.2.6 XML文本文档类(XmlDocument) 14.3 XML串行化 14.3.1 XmlSerializer串行化类 14.3.2 ...

    ASP.NET3.5从入门到精通

    第 14 章 ASP.NET XML 和Web Service 14.1 XML 简介 14.2 读写XML 14.2.1 XML 与HTML 14.2.2 创建XML 文档 14.2.3 XML 控件 14.2.4 XML 文件读取类(XmlTextReader) 14.2.5 XML 文件编写类(XmlTextWriter) 14.2.6...

    ASP.NET 3.5 开发大全word课件

    14.2.2 创建XML文档 14.2.3 XML控件 14.2.4 XML文件读取类(XmlTextReader) 14.2.5 XML文件编写类(XmlTextWriter) 14.2.6 XML文本文档类(XmlDocument) 14.3 XML串行化 14.3.1 XmlSerializer串行化类 14.3.2 ...

    ASP.NET 3.5 开发大全11-15

    14.2.2 创建XML文档 14.2.3 XML控件 14.2.4 XML文件读取类(XmlTextReader) 14.2.5 XML文件编写类(XmlTextWriter) 14.2.6 XML文本文档类(XmlDocument) 14.3 XML串行化 14.3.1 XmlSerializer串行化类 14.3.2 ...

    ASP.NET 3.5 开发大全1-5

    14.2.2 创建XML文档 14.2.3 XML控件 14.2.4 XML文件读取类(XmlTextReader) 14.2.5 XML文件编写类(XmlTextWriter) 14.2.6 XML文本文档类(XmlDocument) 14.3 XML串行化 14.3.1 XmlSerializer串行化类 14.3.2 ...

    ASP.NET3.5典型模块开发源代码

    15.2.2 如何在ASP.NET 3.5中调用Alexa的数据 170 15.3 自定义统计模块 171 15.3.1 设计保存IP数据的数据库 171 15.3.2 设计显示IP信息的界面 173 15.3.3 显示最近访问站点的10个IP信息 174 15.3.4 实现IP...

    免费Spire.XLS: 处理Excel文档in C#, VB.NET

    Spire.XLS for .NET 还允许开发人员将Excel文件转换成PDF, HTML, CSV, Text, XML以及图片格式。 注:下载包含有Spire.xls.dll文件以及部分Demo, 你可以调用DLL并参照Demo提供的代码处理Excel文档。

    史上最好传智播客就业班.net培训教程60G 不下会后悔

    在ASP.Net课程的一开始,不是直接教学员怎么拖ASP.Net控件进行快速开发,而是通过ashx的模式开发原始的动态网站,让学员明白“请求—处理—响应模型”、“Http协议、Http无状态”、“c#代码渲染生成浏览器端...

    亮剑.NET深入体验与实战精要2

    1.6.1 如何创建ASP.NET项目 58 1.6.2 如何创建Windows项目 61 1.6.3 Visual Studio.NET 2008 操作与使用技巧 61 1.6.4 常见开发调试技巧 66 1.6.5 错误异常处理方法 70 本章常见技术面试题 76 常见面试技巧之面试...

    ASP.NET2.0典型模块(1-16)

    SQL2000SampleDb.msi SQL Server2000的示例数据库 ReportSample 一个报表应用范例 &lt;br&gt;第19章(\C19) 示例描述:本章示例展现PDF的应用以及在.NET 2.0中的格式转换 PDFTool 创建PDF文档的...

    淘特Asp.Net Cms v4.0.rar

    23、WORD文档上传自动转为HTML格式,并过滤到冗余代码并上传图片。 24、RSS支持,可以根据每个栏目提供最新RSS输出。 25、自定义字段支持,可以为文章系统扩展定义字段。 26、自定义模型功能 27、集成DiscuzNt...

    亮剑.NET深入体验与实战精要3

    1.6.1 如何创建ASP.NET项目 58 1.6.2 如何创建Windows项目 61 1.6.3 Visual Studio.NET 2008 操作与使用技巧 61 1.6.4 常见开发调试技巧 66 1.6.5 错误异常处理方法 70 本章常见技术面试题 76 常见面试技巧之面试...

Global site tag (gtag.js) - Google Analytics