ASP.NET中的XML表单控件_MySQL

Jun 01, 2016 pm 02:11 PM
br case format public コントロール

导 读:介绍了有关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("rn");

    }



    // 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 + "" + value);

        outputQ.Append("rn");

    }



// ********************************** 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
        {

            outputXml.Append(t);

        }



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



        // Display the attributes values for the current node

        if (reader.HasAttributes)

        {

            outputXml.Append(" Attributes:");



            for (int j=0; j
            {

                outputXml.Append(reader[j]);

            }

        }

        outputXml.Append("rn");

    }



    /// ************************* 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" + "");

        }



        else

        {

            outputXml.Append("");

            if (XmlNodeType.Element == node.NodeType)

            {

                XmlNamedNodeMap map = node.Attributes;

                foreach (XmlNode attrnode in map)

                    outputXml.Append(" " + attrnode.Name + " ");

            }

            outputXml.Append("rn");

        }

    }

}





下面就是webform2.aspx了

webform2.aspx

                                ---

















 





test









   



 





 

   

   

   

 



 

   

   

   

 

XML Document:          FileName:
XPath Expression








 

 

 

   

   

 

Output from Query XML Data
Query Display:

                         Descriptive

                         XML

                        


 






   





   





       

       

       


 

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットな記事タグ

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

iOS の開発者バージョンとパブリック バージョンの違いは何ですか? iOS の開発者バージョンとパブリック バージョンの違いは何ですか? Mar 01, 2024 pm 12:55 PM

iOS の開発者バージョンとパブリック バージョンの違いは何ですか?

Go 言語 Web 開発フレームワークの一般的なリッチ テキスト エディター コントロール Go 言語 Web 開発フレームワークの一般的なリッチ テキスト エディター コントロール Jun 04, 2023 am 09:10 AM

Go 言語 Web 開発フレームワークの一般的なリッチ テキスト エディター コントロール

HMD Skyline に新しいカラーオプションと公式磁気ケースが追加されました HMD Skyline に新しいカラーオプションと公式磁気ケースが追加されました Aug 23, 2024 am 07:04 AM

HMD Skyline に新しいカラーオプションと公式磁気ケースが追加されました

スイッチケース判定変数 スイッチケース判定変数 Feb 19, 2024 am 08:04 AM

スイッチケース判定変数

PHP は GMT/UTC 日付/時刻をフォーマットします PHP は GMT/UTC 日付/時刻をフォーマットします Mar 21, 2024 am 10:41 AM

PHP は GMT/UTC 日付/時刻をフォーマットします

brとはどのようなソフトウェアですか brとはどのようなソフトウェアですか Dec 25, 2020 pm 03:06 PM

brとはどのようなソフトウェアですか

HTMLのbrとは何ですか HTMLのbrとは何ですか Feb 20, 2021 pm 02:32 PM

HTMLのbrとは何ですか

パネルコントロールの使い方 パネルコントロールの使い方 Oct 10, 2023 am 09:36 AM

パネルコントロールの使い方

See all articles