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

本文介绍了一个ASP.NET应用程序的功能实现过程,包括通过按钮事件动态生成XML文档,并将该文档内容展示在页面上的TEXTBOX中;同时,还实现了将XML文档转换为HTML格式并在浏览器中预览的功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值