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

  1. 程序实现功能:
  2. 1.读取数据,点解“获取”按钮动态生成XML格式的文档,并把生成的文档放在TEXTBOX或者生成一个XML文件。
  3. 2.点击“浏览”按钮,把获取到的XML格式文档,转换成HTML,在浏览器中显示。
  4. 首先在ASPX对应的CS文件中引入using System.Xml;
  5. int m = 0; int loop = 0;
  6. //根据指定的获取深度DEPTH获取用于生成XML文档的数据
  7. private int initData(string[] parent, string[] guid, string[] path, string[] name, ChannelCollection cc,int depth)
  8. {
  9.   foreach (Channel channel in cc)
  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.        ChannelCollection c = channel.Channels;
  19.        ++loop;
  20.        initData( parent, guid, path, name, c,depth);
  21.      }
  22.    }
  23.    return m;
  24. }
  25. //点击“获取XML内容“按钮执行的事件
  26. protected void ButtonGetXml_Click(object sender, EventArgs e)
  27. {
  28. ChannelCollection cc = selectedChannel.Channels;
  29. string[] parent =new string[1000];
  30. string[] guid = new string[1000];
  31. string[] path = new string[1000];
  32. string[] style = new string[1000];
  33. string[] name = new string[1000];
  34. int i=0;
  35. int depth = int.Parse( DropDownListGetDepth.SelectedValue);
  36. //根据指定的获取深度DEPTH获取用于生成XML文档的数据
  37. i=initData(parent, guid, path, name, cc,depth);
  38. //创建XML 文档对象
  39. document = new XmlDocument();
  40. //创建XML节点元素
  41. XmlElement channelsElement = document.CreateElement("Channels");
  42. document.AppendChild(channelsElement);
  43. for (int k = 1; k <=i; k++)
  44. {
  45. channelsElement.AppendChild(document.CreateElement("CHANNEL"));
  46. }
  47. //根据元素节点名获取元素节点
  48. XmlNodeList nodelist = document.GetElementsByTagName("CHANNEL");
  49. int size = nodelist.Count;
  50. for (int k = 0; k < size; k++)
  51. {
  52. XmlNode node = nodelist.Item(k);
  53. XmlElement elementNode = (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. XmlNodeList nodelistParent = document.GetElementsByTagName("PARENT");
  61. int sizeParent = nodelistParent.Count;
  62. for (int k = 0; k < sizeParent; k++)
  63. {
  64. XmlNode node = nodelistParent.Item(k);
  65. XmlElement elementNode = (XmlElement)node;
  66. //用初始化后的数据生成对应元素节点的文本节点
  67. elementNode.AppendChild(document.CreateTextNode(parent[k]));
  68. }
  69. XmlNodeList nodelistGuid = document.GetElementsByTagName("GUID");
  70. int sizeGuid = nodelistGuid.Count;
  71. for (int k = 0; k < sizeGuid; k++)
  72. {
  73. XmlNode node = nodelistGuid.Item(k);
  74. XmlElement elementNode = (XmlElement)node;
  75. elementNode.AppendChild(document.CreateTextNode(guid[k]));
  76. }
  77. XmlNodeList nodelistPath = document.GetElementsByTagName("PATH");
  78. int sizePath = nodelistPath.Count;
  79. for (int k = 0; k < sizePath; k++)
  80. {
  81. XmlNode node = nodelistPath.Item(k);
  82. XmlElement elementNode = (XmlElement)node;
  83. elementNode.AppendChild(document.CreateTextNode(path[k]));
  84. }
  85. XmlNodeList nodelistName = document.GetElementsByTagName("NAME");
  86. int sizeName = nodelistName.Count;
  87. for (int k = 0; k < sizeName; k++)
  88. {
  89. XmlNode node = nodelistName.Item(k);
  90. XmlElement elementNode = (XmlElement)node;
  91. elementNode.AppendChild(document.CreateTextNode(name[k]));
  92. }
  93. // document.Save("/icbc/newxml.xml");//可以保存为XML文件,位置在C:/icbc/newxml.xml
  94. //创建用于保存内容的字符串里
  95. StringBuilder sb = new StringBuilder();
  96. //输出流指向字符串
  97. XmlWriter writer= XmlWriter.Create(sb);
  98. //XML文档把内容写到字符串里
  99. document.WriteContentTo(writer);
  100. writer.Flush();
  101. //让页面中的文本框显示XML文档内容
  102. TextBoxContent.Text=sb.ToString() ;
  103. }
  104. //点击”预览“按钮,转到XML生成HTML的页面
  105. protected void ButtonYuLAN_Click(object sender, EventArgs e)
  106. {
  107. //XmlDocument xml = new XmlDocument();
  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. using System;
  118. using System.Data;
  119. using System.Configuration;
  120. using System.Collections;
  121. using System.Web;
  122. using System.Web.Security;
  123. using System.Web.UI;
  124. using System.Web.UI.WebControls;
  125. using System.Web.UI.WebControls.WebParts;
  126. using System.Web.UI.HtmlControls;
  127. using System.Xml;
  128. using System.IO;
  129. using System.Text;
  130. public partial class Module_ChannelInfoManage_PreExploerXMLMenu : System.Web.UI.Page
  131. {
  132. protected void Page_Load(object sender, EventArgs e)
  133. {
  134. //创建XmlDisplay类的实例
  135. XmlDisplay XmlDisplayDemo = new XmlDisplay();
  136. //得到XML内容,申明为字符串用于生成 StringReader
  137. string xmlcontent=(string )Session["xmlTextBoxContent"];
  138. //生成在网页上保留静态文本的位置
  139. Literal LT = new Literal();
  140. LT.Text = XmlDisplayDemo.LoadDocument(new StringReader(xmlcontent));
  141. this.Panel1.Controls.Add(LT);
  142. }
  143. //这个类读入并处理XML文件
  144. public class XmlDisplay
  145. {
  146. public string LoadDocument(StringReader sr)
  147. {
  148. XmlReader xmlReader = null;
  149. StringBuilder html = new StringBuilder();
  150. try
  151. {
  152. //创建XMLTextReader的实例。
  153. xmlReader = XmlReader.Create(sr);
  154. //处理XML文件
  155. html.Append(ProcessXml(xmlReader));
  156. }
  157. catch (XmlException ex)
  158. {
  159. html.Append("发生一个XML异常:" + ex.ToString());
  160. }
  161. catch (Exception ex)
  162. {
  163. html.Append("发生一个普通异常:" + ex.ToString());
  164. }
  165. finally
  166. {
  167. if (xmlReader != null)
  168. xmlReader.Close();
  169. }
  170. return html.ToString();
  171. }
  172. //处理XML数据的方法,用于控制生成HTML文件的格式
  173. private string ProcessXml(XmlReader xmlReader)
  174. {
  175. StringBuilder temp = new StringBuilder();
  176. int i = 1;
  177. temp.Append("<table border=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. return temp.ToString();
  194. }//结束ProcessXML方法
  195. }
  196. }
  197. 来源:aaronbai的blog
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值