国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > .NET > 正文

ASP.NET中的XML表單控件

2024-07-10 12:57:57
字體:
來源:轉載
供稿:網友


導 讀:介紹了有關asp.net中xml控件的使用,有個小bug:在webform.aspx中出現的xml控件,其中的transformsource屬性設定了樣式表文件路徑,可是在文章出處沒有找到這個xsl文件.:( 自己解決吧.
--------------------------------------------------------------------------------
在這個代碼中揭示了微軟在asp.net架構中隱藏的一個web表單控件,即<asp:xml runat=server/>,我只給代碼,不給解釋,大家自己下課后去研究吧。
另外,由于是beta1,在這個控件中你使用的xslt里面不能使用<xsl:sort>,當然,亦不能使用那個order-by了,因為它支持的xsl空間是帶"1999"的那個,而不是原來的那個。
另外,我從微軟得到的回答就是在beta2里面,它將支持<xsl:sort>,就可以全部轉向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("</xmp><font color=/"#ff6600/">"+ exp.message+"</font><xmp>");
            }
            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("</xmp><font color=/"#ff6600/">"+ exp.message+"</font><xmp>");
            }
            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" %>

<html><head>

  <script runat="server" language="c#">
    // put page script here
        public void on_keyup(object sender, system.eventargs e)
    {
        response.write("works");
    }

  </script>

<!--<link rel="stylesheet" href="default.css" type="text/css">-->
<title>test</title>
</head>

<body   >

    
<form method="post" action="webform2.aspx" runat="server" enctype="multipart/form-data">
  
<div align="left">
<table>
  <tr>
    <td>xml document:</td>
    <td><input type=file id="xmlfile" runat=server>         filename:</td>
    <td><asp:label id="filelabel" runat="server"></asp:label></td>
  </tr>

  <tr>
    <td>xpath expression</td>
    <td><asp:textbox id=textbox1 runat="server" height="20" width="300" text=".//text()" onkey_up="on_keyup"></asp:textbox></td>
    <td><asp:button type=submit onclick="query_click" runat="server" height="20" width="91" text="query"></asp:button></td>
  </tr>
</table>

</br>
<table>
  <tr><td>output from query</td><td>xml data</td><tr>
  <tr><td>query display: <asp:dropdownlist runat="server">
                         <asp:listitem>descriptive</asp:listitem>
                         <asp:listitem>xml</asp:listitem>
                         </asp:dropdownlist>
  </td><tr>
  <tr>
    <td width="50%" valign="top" align="left"><asp:textbox id=textbox2 runat="server" height="400" width="350" textmode="multiline" rows="10"></asp:textbox></td>
    <td width="50%" valign="top" align="left"><asp:xml id="myxml" transformsource="test.xsl" runat=server/></asp:xml></td>
  </tr>
</table>
</div>

    <td><asp:textbox id=textbox3 runat="server" height="1" width="5" textmode="multiline" rows="110"></asp:textbox></td>

</form>
    
</body>
</html>
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 盐边县| 蒲江县| 甘肃省| 同江市| 绵阳市| 青冈县| 张家界市| 句容市| 内江市| 白朗县| 双江| 巫溪县| 理塘县| 道孚县| 防城港市| 丹棱县| 桂东县| 咸宁市| 丰城市| 牙克石市| 吉林省| 中西区| 济源市| 五常市| 怀安县| 台东县| 陆丰市| 土默特右旗| 瓦房店市| 内乡县| 德钦县| 锦州市| 木兰县| 朝阳市| 洪泽县| 无为县| 长宁区| 阿拉善盟| 黔南| 新疆| 禹城市|