ASP.NET中动态生成Xml格式文档,并转换为HTML文件
1
程序实现功能:2

3
1.读取数据,点解“获取”按钮动态生成XML格式的文档,并把生成的文档放在TEXTBOX或者生成一个XML文件。4

5
2.点击“浏览”按钮,把获取到的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.xml123
//创建用于保存内容的字符串里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

157
using System;158
using System.Data;159
using System.Configuration;160
using System.Collections;161
using System.Web;162
using System.Web.Security;163
using System.Web.UI;164
using System.Web.UI.WebControls;165
using System.Web.UI.WebControls.WebParts;166
using System.Web.UI.HtmlControls;167
using System.Xml;168
using System.IO;169
using System.Text;170

171
public partial class Module_ChannelInfoManage_PreExploerXMLMenu : System.Web.UI.Page172


{173
protected void Page_Load(object sender, EventArgs e)174

{175
//创建XmlDisplay类的实例176
XmlDisplay XmlDisplayDemo = new XmlDisplay();177
//得到XML内容,申明为字符串用于生成 StringReader178
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 XmlDisplay188

189

{190

191
public string LoadDocument(StringReader sr)192

{193
XmlReader xmlReader = null;194
195
StringBuilder html = new StringBuilder();196
try197

{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
finally214

{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

这里和大家分享和学习如何学IT!

浙公网安备 33010602011771号