zoukankan      html  css  js  c++  java
  • ASP.NET中动态生成Xml格式文档,并转换为HTML文件

    程序实现功能:
    
    1.读取数据,点解“获取”按钮动态生成XML格式的文档,并把生成的文档放在TEXTBOX或者生成一个XML文件。
    
    2.点击“浏览”按钮,把获取到的XML格式文档,转换成HTML,在浏览器中显示。
    
    首先在ASPX对应的CS文件中引入using System.Xml;
    
    int m = 0; int loop = 0;
    
    //根据指定的获取深度DEPTH获取用于生成XML文档的数据
    private int initData(string[] parent, string[] guid, string[] path, string[] name, ChannelCollection cc,int depth)
    {
    
    
    foreach (Channel channel in cc)
    {
    
    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)
    {
    ChannelCollection c = channel.Channels;
    
    ++loop;
    initData( parent, guid, path, name, c,depth);
    
    }
    
    }
    return m;
    }
    
    //点击“获取XML内容“按钮执行的事件
    protected void ButtonGetXml_Click(object sender, EventArgs e)
    {
    
    ChannelCollection cc = selectedChannel.Channels;
    string[] parent =new string[1000];
    string[] guid = new string[1000];
    string[] path = new string[1000];
    string[] style = new string[1000];
    string[] name = new string[1000];
    int i=0;
    
    int depth = int.Parse( DropDownListGetDepth.SelectedValue);
    //根据指定的获取深度DEPTH获取用于生成XML文档的数据
    i=initData(parent, guid, path, name, cc,depth);
    //创建XML 文档对象
    document = new XmlDocument();
    //创建XML节点元素
    XmlElement channelsElement = document.CreateElement("Channels");
    document.AppendChild(channelsElement);
    
    for (int k = 1; k <=i; k++)
    {
    channelsElement.AppendChild(document.CreateElement("CHANNEL"));
    }
    //根据元素节点名获取元素节点
    XmlNodeList nodelist = document.GetElementsByTagName("CHANNEL");
    int size = nodelist.Count;
    for (int k = 0; k < size; k++)
    {
    XmlNode node = nodelist.Item(k);
    
    XmlElement elementNode = (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"));
    }
    
    XmlNodeList nodelistParent = document.GetElementsByTagName("PARENT");
    int sizeParent = nodelistParent.Count;
    for (int k = 0; k < sizeParent; k++)
    {
    XmlNode node = nodelistParent.Item(k);
    
    XmlElement elementNode = (XmlElement)node;
    //用初始化后的数据生成对应元素节点的文本节点
    elementNode.AppendChild(document.CreateTextNode(parent[k]));
    
    }
    
    XmlNodeList nodelistGuid = document.GetElementsByTagName("GUID");
    int sizeGuid = nodelistGuid.Count;
    for (int k = 0; k < sizeGuid; k++)
    {
    XmlNode node = nodelistGuid.Item(k);
    
    XmlElement elementNode = (XmlElement)node;
    elementNode.AppendChild(document.CreateTextNode(guid[k]));
    
    }
    XmlNodeList nodelistPath = document.GetElementsByTagName("PATH");
    int sizePath = nodelistPath.Count;
    for (int k = 0; k < sizePath; k++)
    {
    XmlNode node = nodelistPath.Item(k);
    
    XmlElement elementNode = (XmlElement)node;
    elementNode.AppendChild(document.CreateTextNode(path[k]));
    
    }
    XmlNodeList nodelistName = document.GetElementsByTagName("NAME");
    int sizeName = nodelistName.Count;
    for (int k = 0; k < sizeName; k++)
    {
    XmlNode node = nodelistName.Item(k);
    
    XmlElement elementNode = (XmlElement)node;
    elementNode.AppendChild(document.CreateTextNode(name[k]));
    
    }
    
    // document.Save("/icbc/newxml.xml");//可以保存为XML文件,位置在C:/icbc/newxml.xml
    //创建用于保存内容的字符串里
    StringBuilder sb = new StringBuilder();
    //输出流指向字符串
    XmlWriter writer= XmlWriter.Create(sb); 
    //XML文档把内容写到字符串里
    document.WriteContentTo(writer);
    
    writer.Flush();
    //让页面中的文本框显示XML文档内容
    TextBoxContent.Text=sb.ToString() ;
    
    
    }
    
    //点击”预览“按钮,转到XML生成HTML的页面
    protected void ButtonYuLAN_Click(object sender, EventArgs e)
    {
    //XmlDocument xml = new XmlDocument();
    
    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的内容如下
    
    using System;
    using System.Data;
    using System.Configuration;
    using System.Collections;
    using System.Web;
    using System.Web.Security;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;
    using System.Web.UI.HtmlControls;
    using System.Xml;
    using System.IO;
    using System.Text;
    
    public partial class Module_ChannelInfoManage_PreExploerXMLMenu : System.Web.UI.Page
    {
    protected void Page_Load(object sender, EventArgs e)
    {
    //创建XmlDisplay类的实例
    XmlDisplay XmlDisplayDemo = new XmlDisplay();
    //得到XML内容,申明为字符串用于生成 StringReader
    string xmlcontent=(string )Session["xmlTextBoxContent"];
    
    //生成在网页上保留静态文本的位置
    Literal LT = new Literal();
    LT.Text = XmlDisplayDemo.LoadDocument(new StringReader(xmlcontent));
    this.Panel1.Controls.Add(LT);
    }
    
    //这个类读入并处理XML文件
    public class XmlDisplay
    
    {
    
    public string LoadDocument(StringReader sr)
    {
    XmlReader xmlReader = null;
    
    StringBuilder html = new StringBuilder();
    try
    {
    //创建XMLTextReader的实例。
    
    
    xmlReader = XmlReader.Create(sr); 
    //处理XML文件
    html.Append(ProcessXml(xmlReader));
    }
    catch (XmlException ex)
    {
    html.Append("发生一个XML异常:" + ex.ToString());
    }
    catch (Exception ex)
    {
    html.Append("发生一个普通异常:" + ex.ToString());
    }
    finally
    {
    if (xmlReader != null)
    xmlReader.Close();
    }
    return html.ToString();
    }
    
    //处理XML数据的方法,用于控制生成HTML文件的格式
    private string ProcessXml(XmlReader xmlReader)
    {
    StringBuilder temp = new StringBuilder();
    int i = 1;
    temp.Append("<table border=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>");
    return temp.ToString();
    
    }//结束ProcessXML方法
    }
    }
    
    
    
  • 相关阅读:
    learning scala view collection
    scala
    learning scala dependency injection
    learning scala implicit class
    learning scala type alise
    learning scala PartialFunction
    learning scala Function Recursive Tail Call
    learning scala Function Composition andThen
    System.Threading.Interlocked.CompareChange使用
    System.Threading.Monitor的使用
  • 原文地址:https://www.cnblogs.com/xiaofengfeng/p/1813169.html
Copyright © 2011-2022 走看看