您的位置:首页技术开发ASP技巧 → ASP.NET中的XML表单控件

ASP.NET中的XML表单控件

时间:2004/11/7 4:10:00来源:本站整理作者:蓝点我要评论(0)

导 读:介绍了有关ASP.NET中XML控件的使用,有个小BUG:在WEBFORM.ASPX中出现的XML控件,其中的transformsource属性设定了样式表文件路径,可是在文章出处没有找到这个XSL文件.:( 自己解决吧.

在这个代码中揭示了微软在ASP.NET架构中隐藏的一个WEB表单控件,即

,我只给代码,不给解释,大家自己下课后去研究吧。

另外,由于是beta1,在这个控件中你使用的xslt里面不能使用,当然,亦不能使用那个order-by了,因为它支持的xsl空间是带"1999"的那个,而不是原来的那个。

另外,我从微软得到的回答就是在beta2里面,它将支持,就可以全部转向xml+xsl了,而不用再为源代码保密问题头疼了。

请看下例:

webform2.cs

                                -

using System;

using System.Collections;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Web;

using System.Web.SessionState;

using System.Web.UI;

using System.Web.UI.WebControls;

using System.Web.UI.HtmlControls;

using System.Text;

using System.IO;

using System.Xml;



public class WebForm2 : Page

{

    public StringBuilder outputQ;

    public StringBuilder outputXml;

      public DocumentNavigator nav = null;

    public HtmlInputFile XmlFile;

    

    public System.Web.UI.WebControls.Xml MyXml;



    public System.Web.UI.WebControls.TextBox TextBox1;        

    public System.Web.UI.WebControls.TextBox TextBox2;

    public System.Web.UI.WebControls.TextBox TextBox3;        

    public System.Web.UI.WebControls.Button Query;

    public System.Web.UI.WebControls.Label FileLabel;

  

    public void On_KeyUp(object sender, System.EventArgs e)

    {

        Response.Write("Works");

    }



    protected void Page_Load(object sender, EventArgs e)

    {

        if (!IsPostBack)

        {

            //

            // Evals true first time browser hits the page

            //

        }

    }



    public void Query_Click(object sender, System.EventArgs e)

    {

        HttpPostedFile xmlfile = XmlFile.PostedFile;

         XmlDocument doc = new XmlDocument();    

         MyXml.Document = new XmlDocument();    

//        TextBox2.Text="";

//        TextBox3.Text="";



        if (xmlfile.FileName != String.Empty)

        {

            try

            {

                FileLabel.Text= xmlfile.FileName;



                MyXml.Document.Load(xmlfile.FileName);

                outputXml = new StringBuilder();

                XmlTextReader reader = new XmlTextReader (xmlfile.FileName);

                ShowDocument();

                TextBox3.Text = outputXml.ToString();



                outputQ = new StringBuilder();

                doc.Load(xmlfile.FileName);

                DocumentNavigator nav = new DocumentNavigator(doc);

                // Perform the query e.g. "descendant::book/price"

                XPathQuery(nav, TextBox1.Text);

                TextBox2.Text = outputQ.ToString();



            }

            catch (Exception exp) {

                //outputQ.Append(""+ exp.Message+"");

            }

            finally {}

        }

        else if (FileLabel.Text != String.Empty)

        {

            try

            {

                MyXml.Document.Load(FileLabel.Text);

                outputXml = new StringBuilder();

                XmlTextReader reader = new XmlTextReader (FileLabel.Text);

                ShowDocument();

                TextBox3.Text = outputXml.ToString();



                ShowDocument();



                outputQ = new StringBuilder();

                doc.Load(FileLabel.Text);

                DocumentNavigator nav = new DocumentNavigator(doc);

                // Perform the query e.g. "descendant::book/price"

                XPathQuery(nav, TextBox1.Text);

                TextBox2.Text = outputQ.ToString();



            }

            catch (Exception exp) {

                outputQ.Append(""+ exp.Message+"");

            }

            finally {}

        }

    }



    private void XPathQuery(XmlNavigator navigator, String xpathexpr )

    {

        try

        {

            // Save context node position

            navigator.PushPosition();

            navigator.Select (xpathexpr);

            FormatXml(navigator);



            // Restore context node position

            navigator.PopPosition();        

        }

        catch (Exception e)

        {

        }

    }

    

//***************************** Navigator ************************************

    private void FormatXml (XmlNavigator navigator)

    {

        while (navigator.MoveToNextSelected())

        {

            switch (navigator.NodeType)

            {

            case XmlNodeType.ProcessingInstruction:

                Format (navigator, "ProcessingInstruction");

                break;

            case XmlNodeType.DocumentType:

                Format (navigator, "DocumentType");

                break;

            case XmlNodeType.Document:

                Format (navigator, "Document");

                break;

            case XmlNodeType.Comment:

                Format (navigator, "Comment");

                break;

            case XmlNodeType.Element:

                Format (navigator, "Element");

                break;

            case XmlNodeType.Text:

                Format (navigator, "Text");

                break;

            case XmlNodeType.Whitespace:

                Format (navigator, "Whitespace");

                break;

            }

        }

        outputQ.Append("\r\n");

    }



    // Format the output

    private void Format (XmlNavigator navigator, String NodeType)

    {

        String value = String.Empty;

        String name = String.Empty;



        if (navigator.HasChildren)

        {

            name = navigator.Name;

            navigator.MoveToFirstChild();

            if (navigator.HasValue)

            {

                value = navigator.Value;

            }

        }

        else

        {

            if (navigator.HasValue)

            {

                value = navigator.Value;

                name = navigator.Name;

            }

        }

        outputQ.Append(NodeType + "<" + name + ">" + value);

        outputQ.Append("\r\n");

    }



// ********************************** XmlReader *****************************

    public void ShowDocument ()

    {

        outputXml = new StringBuilder();

        XmlTextReader reader = new XmlTextReader (FileLabel.Text);



        while (reader.Read())

        {

            switch (reader.NodeType)

            {

            case XmlNodeType.ProcessingInstruction:

                Format (reader, "ProcessingInstruction");

                break;

            case XmlNodeType.DocumentType:

                Format (reader, "DocumentType");

                break;

            case XmlNodeType.Comment:

                Format (reader, "Comment");

                break;

            case XmlNodeType.Element:

                Format (reader, "Element");

                break;

            case XmlNodeType.Text:

                Format (reader, "Text");

                break;

            case XmlNodeType.Whitespace:

                break;

            }

        }

        TextBox3.Text = outputXml.ToString();

    }



    protected void Format(XmlReader reader, String NodeType)

    {

        // Format the output

        for (int i=0; i < reader.Depth; i++)

        {

            outputXml.Append('\t');

        }



        outputXml.Append(reader.Prefix + NodeType + "<" + reader.Name + ">" + reader.Value);



        // Display the attributes values for the current node

        if (reader.HasAttributes)

        {

            outputXml.Append(" Attributes:");



            for (int j=0; j < reader.AttributeCount; j++)

            {

                outputXml.Append(reader[j]);

            }

        }

        outputXml.Append("\r\n");

    }



    /// ************************* DOM *********************************

    protected void ShowDocument(XmlNode node)

    {

        if (node != null)

            Format (node);



        if (node.HasChildNodes)

        {

            node = node.FirstChild;

            while (node != null)

            {

                ShowDocument(node);

                node = node.NextSibling;

            }

        }

    }



    // Format the output

    private void Format (XmlNode node)

    {

        if (!node.HasChildNodes)

        {

           outputXml.Append("\t" + "<" + node.Value + ">");

        }



        else

        {

            outputXml.Append("<" + node.Name + ">");

            if (XmlNodeType.Element == node.NodeType)

            {

                XmlNamedNodeMap map = node.Attributes;

                foreach (XmlNode attrnode in map)

                    outputXml.Append(" " + attrnode.Name + "<" + attrnode.Value + "> ");

            }

            outputXml.Append("\r\n");

        }

    }

}





下面就是webform2.aspx了

webform2.aspx

                                ---

<%@ import="" namespace="System">

<%@ import="" namespace="System.IO">

<%@ assembly="" name="System.Xml">

<%@ import="" namespace="System.Xml">

<%@ page="" language="C#" inherits="WebForm2" src="WebForm2.cs" debug="true">







  

相关阅读 Windows错误代码大全 Windows错误代码查询激活windows有什么用Mac QQ和Windows QQ聊天记录怎么合并 Mac QQ和Windows QQ聊天记录Windows 10自动更新怎么关闭 如何关闭Windows 10自动更新windows 10 rs4快速预览版17017下载错误问题Win10秋季创意者更新16291更新了什么 win10 16291更新内容windows10秋季创意者更新时间 windows10秋季创意者更新内容kb3150513补丁更新了什么 Windows 10补丁kb3150513是什么

文章评论
发表评论

热门文章 没有查询到任何记录。

最新文章 VB.NET 2005编写定时关 Jquery get/post下乱码解决方法 前台gbk gb如何使用数据绑定控件显示数据ASP脚本循环语句ASP怎么提速

人气排行 轻松解决"Server Application Error"和iis"一起学习DataGridView调整列宽用ASP随机生成文件名的函数Jquery get/post下乱码解决方法 前台gbk gbODBC Drivers错误80004005的解决办法返回UPDATE SQL语句所影响的行数的方法用Javascript隐藏超级链接的真实地址两个不同数据库表的分页显示解决方案