Code
1程序实现功能:
2
31.读取数据,点解“获取”按钮动态生成XML格式的文档,并把生成的文档放在TEXTBOX或者生成一个XML文件。
4
52.点击“浏览”按钮,把获取到的XML格式文档,转换成HTML,在浏览器中显示。
6
7
8
9首先在ASPX对应的CS文件中引入using System.Xml;
10
11 int m = 0; int loop = 0;
12
13//根据指定的获取深度DEPTH获取用于生成XML文档的数据
14 private int initData(string[] parent, string[] guid, string[] path, string[] name, ChannelCollection cc,int depth)
15 {
16
17
18 foreach (Channel channel in cc)
19 {
20
21 parent[m] = channel.Parent.Guid;
22 guid[m] = channel.Guid;
23 path[m] = channel.Path;
24 name[m] = channel.Name;
25 m = m + 1;
26 if (channel.Channels.Count!=0 &&loop<depth)
27 {
28 ChannelCollection c = channel.Channels;
29
30 ++loop;
31 initData( parent, guid, path, name, c,depth);
32
33 }
34
35 }
36 return m;
37 }
38
39 //点击“获取XML内容“按钮执行的事件
40 protected void ButtonGetXml_Click(object sender, EventArgs e)
41 {
42
43 ChannelCollection cc = selectedChannel.Channels;
44 string[] parent =new string[1000];
45 string[] guid = new string[1000];
46 string[] path = new string[1000];
47 string[] style = new string[1000];
48 string[] name = new string[1000];
49 int i=0;
50
51 int depth = int.Parse( DropDownListGetDepth.SelectedValue);
52 //根据指定的获取深度DEPTH获取用于生成XML文档的数据
53 i=initData(parent, guid, path, name, cc,depth);
54 //创建XML 文档对象
55 document = new XmlDocument();
56 //创建XML节点元素
57 XmlElement channelsElement = document.CreateElement("Channels");
58 document.AppendChild(channelsElement);
59
60 for (int k = 1; k <=i; k++)
61 {
62 channelsElement.AppendChild(document.CreateElement("CHANNEL"));
63 }
64 //根据元素节点名获取元素节点
65 XmlNodeList nodelist = document.GetElementsByTagName("CHANNEL");
66 int size = nodelist.Count;
67 for (int k = 0; k < size; k++)
68 {
69 XmlNode node = nodelist.Item(k);
70
71 XmlElement elementNode = (XmlElement)node;
72 //elementNode.SetAttribute("guid",guid[k]);设置元素属性
73 elementNode.AppendChild(document.CreateElement("PARENT"));
74 elementNode.AppendChild(document.CreateElement("GUID"));
75 elementNode.AppendChild(document.CreateElement("PATH"));
76 elementNode.AppendChild(document.CreateElement("NAME"));
77 }
78
79 XmlNodeList nodelistParent = document.GetElementsByTagName("PARENT");
80 int sizeParent = nodelistParent.Count;
81 for (int k = 0; k < sizeParent; k++)
82 {
83 XmlNode node = nodelistParent.Item(k);
84
85 XmlElement elementNode = (XmlElement)node;
86 //用初始化后的数据生成对应元素节点的文本节点
87 elementNode.AppendChild(document.CreateTextNode(parent[k]));
88
89 }
90
91 XmlNodeList nodelistGuid = document.GetElementsByTagName("GUID");
92 int sizeGuid = nodelistGuid.Count;
93 for (int k = 0; k < sizeGuid; k++)
94 {
95 XmlNode node = nodelistGuid.Item(k);
96
97 XmlElement elementNode = (XmlElement)node;
98 elementNode.AppendChild(document.CreateTextNode(guid[k]));
99
100 }
101 XmlNodeList nodelistPath = document.GetElementsByTagName("PATH");
102 int sizePath = nodelistPath.Count;
103 for (int k = 0; k < sizePath; k++)
104 {
105 XmlNode node = nodelistPath.Item(k);
106
107 XmlElement elementNode = (XmlElement)node;
108 elementNode.AppendChild(document.CreateTextNode(path[k]));
109
110 }
111 XmlNodeList nodelistName = document.GetElementsByTagName("NAME");
112 int sizeName = nodelistName.Count;
113 for (int k = 0; k < sizeName; k++)
114 {
115 XmlNode node = nodelistName.Item(k);
116
117 XmlElement elementNode = (XmlElement)node;
118 elementNode.AppendChild(document.CreateTextNode(name[k]));
119
120 }
121
122 // document.Save("/icbc/newxml.xml");//可以保存为XML文件,位置在C:/icbc/newxml.xml
123 //创建用于保存内容的字符串里
124 StringBuilder sb = new StringBuilder();
125 //输出流指向字符串
126 XmlWriter writer= XmlWriter.Create(sb);
127 //XML文档把内容写到字符串里
128 document.WriteContentTo(writer);
129
130 writer.Flush();
131 //让页面中的文本框显示XML文档内容
132 TextBoxContent.Text=sb.ToString() ;
133
134
135 }
136
137//点击”预览“按钮,转到XML生成HTML的页面
138 protected void ButtonYuLAN_Click(object sender, EventArgs e)
139 {
140 //XmlDocument xml = new XmlDocument();
141
142 if (TextBoxContent.Text == null || TextBoxContent.Text == "")
143 {
144 Response.Write("<script>alert('请先点击获取内容');</script>");
145 return;
146
147 }
148 Session["xmlTextBoxContent"] = TextBoxContent.Text;
149
150
151 Response.Write("<script>window.open('PreExploerXMLMenu.aspx')</script>");
152
153 }
154
155//'PreExploerXMLMenu.aspx.CS的内容如下
156
157using System;
158using System.Data;
159using System.Configuration;
160using System.Collections;
161using System.Web;
162using System.Web.Security;
163using System.Web.UI;
164using System.Web.UI.WebControls;
165using System.Web.UI.WebControls.WebParts;
166using System.Web.UI.HtmlControls;
167using System.Xml;
168using System.IO;
169using System.Text;
170
171public partial class Module_ChannelInfoManage_PreExploerXMLMenu : System.Web.UI.Page
172{
173 protected void Page_Load(object sender, EventArgs e)
174 {
175 //创建XmlDisplay类的实例
176 XmlDisplay XmlDisplayDemo = new XmlDisplay();
177 //得到XML内容,申明为字符串用于生成 StringReader
178 string xmlcontent=(string )Session["xmlTextBoxContent"];
179
180 //生成在网页上保留静态文本的位置
181 Literal LT = new Literal();
182 LT.Text = XmlDisplayDemo.LoadDocument(new StringReader(xmlcontent));
183 this.Panel1.Controls.Add(LT);
184 }
185
186 //这个类读入并处理XML文件
187 public class XmlDisplay
188
189 {
190
191 public string LoadDocument(StringReader sr)
192 {
193 XmlReader xmlReader = null;
194
195 StringBuilder html = new StringBuilder();
196 try
197 {
198 //创建XMLTextReader的实例。
199
200
201 xmlReader = XmlReader.Create(sr);
202 //处理XML文件
203 html.Append(ProcessXml(xmlReader));
204 }
205 catch (XmlException ex)
206 {
207 html.Append("发生一个XML异常:" + ex.ToString());
208 }
209 catch (Exception ex)
210 {
211 html.Append("发生一个普通异常:" + ex.ToString());
212 }
213 finally
214 {
215 if (xmlReader != null)
216 xmlReader.Close();
217 }
218 return html.ToString();
219 }
220
221 //处理XML数据的方法,用于控制生成HTML文件的格式
222 private string ProcessXml(XmlReader xmlReader)
223 {
224 StringBuilder temp = new StringBuilder();
225 int i = 1;
226 temp.Append("<table border=1>");
227
228 //XML读取器找到”NAME“的标记元素
229 xmlReader.ReadToFollowing("NAME");
230 do{
231 if (i == 1) temp.Append("<tr>");
232 temp.Append("<td>");
233
234 //xml读取器的位置向前移动,指到 文本元素内容
235 xmlReader.Read();
236 //读取文本元素内容到字符串中
237 temp.Append(xmlReader.Value);
238 temp.Append("</td>");
239 //一行显示10列数据
240 if ((i%10==0)) temp.Append("</tr><tr>");
241 i++;
242 } while (xmlReader.ReadToFollowing("NAME"));
243
244
245 temp.Append("</tr></table>");
246 return temp.ToString();
247
248 }//结束ProcessXML方法
249 }
250}
251
1程序实现功能:
2
31.读取数据,点解“获取”按钮动态生成XML格式的文档,并把生成的文档放在TEXTBOX或者生成一个XML文件。
4
52.点击“浏览”按钮,把获取到的XML格式文档,转换成HTML,在浏览器中显示。
6
7
8
9首先在ASPX对应的CS文件中引入using System.Xml;
10
11 int m = 0; int loop = 0;
12
13//根据指定的获取深度DEPTH获取用于生成XML文档的数据
14 private int initData(string[] parent, string[] guid, string[] path, string[] name, ChannelCollection cc,int depth)
15 {
16
17
18 foreach (Channel channel in cc)
19 {
20
21 parent[m] = channel.Parent.Guid;
22 guid[m] = channel.Guid;
23 path[m] = channel.Path;
24 name[m] = channel.Name;
25 m = m + 1;
26 if (channel.Channels.Count!=0 &&loop<depth)
27 {
28 ChannelCollection c = channel.Channels;
29
30 ++loop;
31 initData( parent, guid, path, name, c,depth);
32
33 }
34
35 }
36 return m;
37 }
38
39 //点击“获取XML内容“按钮执行的事件
40 protected void ButtonGetXml_Click(object sender, EventArgs e)
41 {
42
43 ChannelCollection cc = selectedChannel.Channels;
44 string[] parent =new string[1000];
45 string[] guid = new string[1000];
46 string[] path = new string[1000];
47 string[] style = new string[1000];
48 string[] name = new string[1000];
49 int i=0;
50
51 int depth = int.Parse( DropDownListGetDepth.SelectedValue);
52 //根据指定的获取深度DEPTH获取用于生成XML文档的数据
53 i=initData(parent, guid, path, name, cc,depth);
54 //创建XML 文档对象
55 document = new XmlDocument();
56 //创建XML节点元素
57 XmlElement channelsElement = document.CreateElement("Channels");
58 document.AppendChild(channelsElement);
59
60 for (int k = 1; k <=i; k++)
61 {
62 channelsElement.AppendChild(document.CreateElement("CHANNEL"));
63 }
64 //根据元素节点名获取元素节点
65 XmlNodeList nodelist = document.GetElementsByTagName("CHANNEL");
66 int size = nodelist.Count;
67 for (int k = 0; k < size; k++)
68 {
69 XmlNode node = nodelist.Item(k);
70
71 XmlElement elementNode = (XmlElement)node;
72 //elementNode.SetAttribute("guid",guid[k]);设置元素属性
73 elementNode.AppendChild(document.CreateElement("PARENT"));
74 elementNode.AppendChild(document.CreateElement("GUID"));
75 elementNode.AppendChild(document.CreateElement("PATH"));
76 elementNode.AppendChild(document.CreateElement("NAME"));
77 }
78
79 XmlNodeList nodelistParent = document.GetElementsByTagName("PARENT");
80 int sizeParent = nodelistParent.Count;
81 for (int k = 0; k < sizeParent; k++)
82 {
83 XmlNode node = nodelistParent.Item(k);
84
85 XmlElement elementNode = (XmlElement)node;
86 //用初始化后的数据生成对应元素节点的文本节点
87 elementNode.AppendChild(document.CreateTextNode(parent[k]));
88
89 }
90
91 XmlNodeList nodelistGuid = document.GetElementsByTagName("GUID");
92 int sizeGuid = nodelistGuid.Count;
93 for (int k = 0; k < sizeGuid; k++)
94 {
95 XmlNode node = nodelistGuid.Item(k);
96
97 XmlElement elementNode = (XmlElement)node;
98 elementNode.AppendChild(document.CreateTextNode(guid[k]));
99
100 }
101 XmlNodeList nodelistPath = document.GetElementsByTagName("PATH");
102 int sizePath = nodelistPath.Count;
103 for (int k = 0; k < sizePath; k++)
104 {
105 XmlNode node = nodelistPath.Item(k);
106
107 XmlElement elementNode = (XmlElement)node;
108 elementNode.AppendChild(document.CreateTextNode(path[k]));
109
110 }
111 XmlNodeList nodelistName = document.GetElementsByTagName("NAME");
112 int sizeName = nodelistName.Count;
113 for (int k = 0; k < sizeName; k++)
114 {
115 XmlNode node = nodelistName.Item(k);
116
117 XmlElement elementNode = (XmlElement)node;
118 elementNode.AppendChild(document.CreateTextNode(name[k]));
119
120 }
121
122 // document.Save("/icbc/newxml.xml");//可以保存为XML文件,位置在C:/icbc/newxml.xml
123 //创建用于保存内容的字符串里
124 StringBuilder sb = new StringBuilder();
125 //输出流指向字符串
126 XmlWriter writer= XmlWriter.Create(sb);
127 //XML文档把内容写到字符串里
128 document.WriteContentTo(writer);
129
130 writer.Flush();
131 //让页面中的文本框显示XML文档内容
132 TextBoxContent.Text=sb.ToString() ;
133
134
135 }
136
137//点击”预览“按钮,转到XML生成HTML的页面
138 protected void ButtonYuLAN_Click(object sender, EventArgs e)
139 {
140 //XmlDocument xml = new XmlDocument();
141
142 if (TextBoxContent.Text == null || TextBoxContent.Text == "")
143 {
144 Response.Write("<script>alert('请先点击获取内容');</script>");
145 return;
146
147 }
148 Session["xmlTextBoxContent"] = TextBoxContent.Text;
149
150
151 Response.Write("<script>window.open('PreExploerXMLMenu.aspx')</script>");
152
153 }
154
155//'PreExploerXMLMenu.aspx.CS的内容如下
156
157using System;
158using System.Data;
159using System.Configuration;
160using System.Collections;
161using System.Web;
162using System.Web.Security;
163using System.Web.UI;
164using System.Web.UI.WebControls;
165using System.Web.UI.WebControls.WebParts;
166using System.Web.UI.HtmlControls;
167using System.Xml;
168using System.IO;
169using System.Text;
170
171public partial class Module_ChannelInfoManage_PreExploerXMLMenu : System.Web.UI.Page
172{
173 protected void Page_Load(object sender, EventArgs e)
174 {
175 //创建XmlDisplay类的实例
176 XmlDisplay XmlDisplayDemo = new XmlDisplay();
177 //得到XML内容,申明为字符串用于生成 StringReader
178 string xmlcontent=(string )Session["xmlTextBoxContent"];
179
180 //生成在网页上保留静态文本的位置
181 Literal LT = new Literal();
182 LT.Text = XmlDisplayDemo.LoadDocument(new StringReader(xmlcontent));
183 this.Panel1.Controls.Add(LT);
184 }
185
186 //这个类读入并处理XML文件
187 public class XmlDisplay
188
189 {
190
191 public string LoadDocument(StringReader sr)
192 {
193 XmlReader xmlReader = null;
194
195 StringBuilder html = new StringBuilder();
196 try
197 {
198 //创建XMLTextReader的实例。
199
200
201 xmlReader = XmlReader.Create(sr);
202 //处理XML文件
203 html.Append(ProcessXml(xmlReader));
204 }
205 catch (XmlException ex)
206 {
207 html.Append("发生一个XML异常:" + ex.ToString());
208 }
209 catch (Exception ex)
210 {
211 html.Append("发生一个普通异常:" + ex.ToString());
212 }
213 finally
214 {
215 if (xmlReader != null)
216 xmlReader.Close();
217 }
218 return html.ToString();
219 }
220
221 //处理XML数据的方法,用于控制生成HTML文件的格式
222 private string ProcessXml(XmlReader xmlReader)
223 {
224 StringBuilder temp = new StringBuilder();
225 int i = 1;
226 temp.Append("<table border=1>");
227
228 //XML读取器找到”NAME“的标记元素
229 xmlReader.ReadToFollowing("NAME");
230 do{
231 if (i == 1) temp.Append("<tr>");
232 temp.Append("<td>");
233
234 //xml读取器的位置向前移动,指到 文本元素内容
235 xmlReader.Read();
236 //读取文本元素内容到字符串中
237 temp.Append(xmlReader.Value);
238 temp.Append("</td>");
239 //一行显示10列数据
240 if ((i%10==0)) temp.Append("</tr><tr>");
241 i++;
242 } while (xmlReader.ReadToFollowing("NAME"));
243
244
245 temp.Append("</tr></table>");
246 return temp.ToString();
247
248 }//结束ProcessXML方法
249 }
250}
251