- 程序实现功能:
- 1.读取数据,点解“获取”按钮动态生成XML格式的文档,并把生成的文档放在TEXTBOX或者生成一个XML文件。
- 2.点击“浏览”按钮,把获取到的XML格式文档,转换成HTML,在浏览器中显示。
- 首先在ASPX对应的CS文件中引入usingSystem.Xml;
- intm=0;intloop=0;
- //根据指定的获取深度DEPTH获取用于生成XML文档的数据
- privateintinitData(string[]parent,string[]guid,string[]path,string[]name,ChannelCollectioncc,intdepth)
- {
- foreach(Channelchannelincc)
- {
- parent[m]=channel.Parent.Guid;
- guid[m]=channel.Guid;
- path[m]=channel.Path;
- name[m]=channel.Name;
- m=m+1;
- if(channel.Channels.Count!=0&&loop<depth)
- {
- ChannelCollectionc=channel.Channels;
- ++loop;
- initData(parent,guid,path,name,c,depth);
- }
- }
- returnm;
- }
- //点击“获取XML内容“按钮执行的事件
- protectedvoidButtonGetXml_Click(objectsender,EventArgse)
- {
- ChannelCollectioncc=selectedChannel.Channels;
- string[]parent=newstring[1000];
- string[]guid=newstring[1000];
- string[]path=newstring[1000];
- string[]style=newstring[1000];
- string[]name=newstring[1000];
- inti=0;
- intdepth=int.Parse(DropDownListGetDepth.SelectedValue);
- //根据指定的获取深度DEPTH获取用于生成XML文档的数据
- i=initData(parent,guid,path,name,cc,depth);
- //创建XML文档对象
- document=newXmlDocument();
- //创建XML节点元素
- XmlElementchannelsElement=document.CreateElement("Channels");
- document.AppendChild(channelsElement);
- for(intk=1;k<=i;k++)
- {
- channelsElement.AppendChild(document.CreateElement("CHANNEL"));
- }
- //根据元素节点名获取元素节点
- XmlNodeListnodelist=document.GetElementsByTagName("CHANNEL");
- intsize=nodelist.Count;
- for(intk=0;k<size;k++)
- {
- XmlNodenode=nodelist.Item(k);
- XmlElementelementNode=(XmlElement)node;
- //elementNode.SetAttribute("guid",guid[k]);设置元素属性
- elementNode.AppendChild(document.CreateElement("PARENT"));
- elementNode.AppendChild(document.CreateElement("GUID"));
- elementNode.AppendChild(document.CreateElement("PATH"));
- elementNode.AppendChild(document.CreateElement("NAME"));
- }
- XmlNodeListnodelistParent=document.GetElementsByTagName("PARENT");
- intsizeParent=nodelistParent.Count;
- for(intk=0;k<sizeParent;k++)
- {
- XmlNodenode=nodelistParent.Item(k);
- XmlElementelementNode=(XmlElement)node;
- //用初始化后的数据生成对应元素节点的文本节点
- elementNode.AppendChild(document.CreateTextNode(parent[k]));
- }
- XmlNodeListnodelistGuid=document.GetElementsByTagName("GUID");
- intsizeGuid=nodelistGuid.Count;
- for(intk=0;k<sizeGuid;k++)
- {
- XmlNodenode=nodelistGuid.Item(k);
- XmlElementelementNode=(XmlElement)node;
- elementNode.AppendChild(document.CreateTextNode(guid[k]));
- }
- XmlNodeListnodelistPath=document.GetElementsByTagName("PATH");
- intsizePath=nodelistPath.Count;
- for(intk=0;k<sizePath;k++)
- {
- XmlNodenode=nodelistPath.Item(k);
- XmlElementelementNode=(XmlElement)node;
- elementNode.AppendChild(document.CreateTextNode(path[k]));
- }
- XmlNodeListnodelistName=document.GetElementsByTagName("NAME");
- intsizeName=nodelistName.Count;
- for(intk=0;k<sizeName;k++)
- {
- XmlNodenode=nodelistName.Item(k);
- XmlElementelementNode=(XmlElement)node;
- elementNode.AppendChild(document.CreateTextNode(name[k]));
- }
- //document.Save("/icbc/newxml.xml");//可以保存为XML文件,位置在C:/icbc/newxml.xml
- //创建用于保存内容的字符串里
- StringBuildersb=newStringBuilder();
- //输出流指向字符串
- XmlWriterwriter=XmlWriter.Create(sb);
- //XML文档把内容写到字符串里
- document.WriteContentTo(writer);
- writer.Flush();
- //让页面中的文本框显示XML文档内容
- TextBoxContent.Text=sb.ToString();
- }
- //点击”预览“按钮,转到XML生成HTML的页面
- protectedvoidButtonYuLAN_Click(objectsender,EventArgse)
- {
- //XmlDocumentxml=newXmlDocument();
- if(TextBoxContent.Text==null||TextBoxContent.Text=="")
- {
- Response.Write("<script>alert('请先点击获取内容');</script>");
- return;
- }
- Session["xmlTextBoxContent"]=TextBoxContent.Text;
- Response.Write("<script>window.open('PreExploerXMLMenu.aspx')</script>");
- }
- //'PreExploerXMLMenu.aspx.CS的内容如下
- usingSystem;
- usingSystem.Data;
- usingSystem.Configuration;
- usingSystem.Collections;
- usingSystem.Web;
- usingSystem.Web.Security;
- usingSystem.Web.UI;
- usingSystem.Web.UI.WebControls;
- usingSystem.Web.UI.WebControls.WebParts;
- usingSystem.Web.UI.HtmlControls;
- usingSystem.Xml;
- usingSystem.IO;
- usingSystem.Text;
- publicpartialclassModule_ChannelInfoManage_PreExploerXMLMenu:System.Web.UI.Page
- {
- protectedvoidPage_Load(objectsender,EventArgse)
- {
- //创建XmlDisplay类的实例
- XmlDisplayXmlDisplayDemo=newXmlDisplay();
- //得到XML内容,申明为字符串用于生成StringReader
- stringxmlcontent=(string)Session["xmlTextBoxContent"];
- //生成在网页上保留静态文本的位置
- LiteralLT=newLiteral();
- LT.Text=XmlDisplayDemo.LoadDocument(newStringReader(xmlcontent));
- this.Panel1.Controls.Add(LT);
- }
- //这个类读入并处理XML文件
- publicclassXmlDisplay
- {
- publicstringLoadDocument(StringReadersr)
- {
- XmlReaderxmlReader=null;
- StringBuilderhtml=newStringBuilder();
- try
- {
- //创建XMLTextReader的实例。
- xmlReader=XmlReader.Create(sr);
- //处理XML文件
- html.Append(ProcessXml(xmlReader));
- }
- catch(XmlExceptionex)
- {
- html.Append("发生一个XML异常:"+ex.ToString());
- }
- catch(Exceptionex)
- {
- html.Append("发生一个普通异常:"+ex.ToString());
- }
- finally
- {
- if(xmlReader!=null)
- xmlReader.Close();
- }
- returnhtml.ToString();
- }
- //处理XML数据的方法,用于控制生成HTML文件的格式
- privatestringProcessXml(XmlReaderxmlReader)
- {
- StringBuildertemp=newStringBuilder();
- inti=1;
- temp.Append("<tableborder=1>");
- //XML读取器找到”NAME“的标记元素
- xmlReader.ReadToFollowing("NAME");
- do{
- if(i==1)temp.Append("<tr>");
- temp.Append("<td>");
- //xml读取器的位置向前移动,指到文本元素内容
- xmlReader.Read();
- //读取文本元素内容到字符串中
- temp.Append(xmlReader.Value);
- temp.Append("</td>");
- //一行显示10列数据
- if((i%10==0))temp.Append("</tr><tr>");
- i++;
- }while(xmlReader.ReadToFollowing("NAME"));
- temp.Append("</tr></table>");
- returntemp.ToString();
- }//结束ProcessXML方法
- }
- }
- 来源:aaronbai的blog
ASP.NET中动态生成Xml格式文档,并转换为HTML文件
最新推荐文章于 2015-02-12 10:08:17 发布