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方法
    }
    }
    
    
    
  • 相关阅读:
    SQL手工注入方法
    Python + Django 网站平台搭建之- 初识 (一)
    最新版Idea2019.3.4/2020.1完美破解
    使用 Guns 自动生成 SpringBoot + LayUI 的后台管理系统
    SpringBoot+Layui后台管理系统
    国内Maven中央仓库推荐 速度最快最好的Maven仓
    git 下载失败 中断了 继续下 怎么配置参数
    mysql 创建与授权
    jboot-admin
    自动生文器
  • 原文地址:https://www.cnblogs.com/xiaofengfeng/p/1813169.html
Copyright © 2011-2022 走看看