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

首頁 > 編程 > .NET > 正文

使用Asp.Net中的XmlValidatingReader來驗證XML Schema.

2024-07-10 12:57:55
字體:
供稿:網(wǎng)友
  • 網(wǎng)站運營seo文章大全
  • 提供全面的站長運營經(jīng)驗及seo技術(shù)!
  • 這段時間,我正在學(xué)習(xí)xml,書上介紹使用xerces-c或xerces-j來驗證xml文檔的schema或dtd,結(jié)果,發(fā)現(xiàn)上面的工具不好用.

    后來,只有放下書,到書店看看,有沒有其他什么書能帶來幫助.當(dāng)檢到professiona asp.net xml with c# 這本書時,里面講到了使用system.xml 和 system.xml.schema命名空間下的xmltextreader類和xmlvalidatingreader類來驗證帶有schema或dtd的xml文檔.便買下來了.

    回寢室后,根據(jù)書里面面的介紹,寫了一個小的測試程序,發(fā)現(xiàn)還很管用,在這里,但貼出來,希望給需要的人有幫助.

    代碼如下:

    <%@page debug="true"%>
    <%@import namespace="system"%>
    <%@import namespace="system.xml"%>
    <%@import namespace="system.xml.schema"%>
    <script language="c#" runat="server">
    protected void uploadbtn_click(object sender,eventargs e)
    {
    xmltextreader myxml = null;
    xmlvalidatingreader myxmldoc = null;

    int nelements = 0; //統(tǒng)計文檔中element的個數(shù)
    int nattributes = 0; //統(tǒng)計文檔中attributes的個數(shù)
    int ncomments = 0; //統(tǒng)計文檔中 comment的個數(shù)
    int npis = 0; //統(tǒng)計文檔中processinginstruction的個數(shù)
    int ncdatas = 0; //統(tǒng)計文檔中cdata的個數(shù)

    string sworkingtext = "";
    resultarea.text = "";



    try
    {
    //裝載xml document
    myxml = new xmltextreader(fileselector.postedfile.inputstream);
    myxml.whitespacehandling = whitespacehandling.none;

    //xmlvalidatingreader是xmltextreader的幫助功能
    //需要從xmltextreader對象獲取實例
    myxmldoc = new xmlvalidatingreader(myxml);
    myxmldoc.validationtype = validationtype.auto;
    //驗證事件委托的簽名
    myxmldoc.validationeventhandler += new validationeventhandler(this.validationeventcallback);



    //在遍歷xml文檔的時候,xmlvalidatingreadert將根據(jù)schema或dtd
    //對xml進行驗證。
    while(myxmldoc.read())
    {
    //這里面的語句的作用主要是分析xml文檔各node,
    //但while循環(huán)還是必要,因為只有逐個遍歷所有個的node,才會檢查出驗證是否匹配。

    switch(myxmldoc.nodetype) //judge crrent node's type. 判定當(dāng)前結(jié)點的類型
    {
    case xmlnodetype.element : // element 元素
    ++nelements;
    nattributes += myxmldoc.attributecount;
    break;
    case xmlnodetype.text : //文本內(nèi)容
    sworkingtext ="<b>text:</b>" + myxmldoc.value + "<br/>";
    resultarea.text += sworkingtext;
    break;
    case xmlnodetype.comment: //注釋
    ++ncommen;
    break;
    case xmlnodetype.processinginstruction: //處理指令
    ++npis;
    break;
    case xmlnodetype.cdata: //cdata
    ++ncdatas;
    break;
    }
    }



    sworkingtext = "<br/>" + "total number of elements:" + nelements + "<br/>";
    sworkingtext += "total number of attributes in document:" + nattributes + "<br/>";
    sworkingtext += "total comments:" + ncomments + "<br/>";
    sworkingtext += "total processinginstructions:" + npis + "<br/>";
    sworkingtext += "total cdata sections:" + ncdatas;
    resultarea.text += sworkingtext;
    }
    catch(xmlexception exec)
    {
    sworkingtext = "exception while parsing:" + "<br/>";
    sworkingtext += "line number:" + exec.linenumber + "<br/>";
    sworkingtext += "message:" + exec.message + "<br/>" + "<br/>";
    sworkingtext += "line position:" + exec.lineposition + "<br/>";
    sworkingtext += "stack trace:" + "<br/>" + exec.stacktrace;

    resultarea.text = sworkingtext;
    }
    finally
    {
    if (myxmldoc!=null)
    {

    myxmldoc.close();
    }
    }
    }

    //驗證事件
    public void validationeventcallback(object sender,validationeventargs e)
    {
    if (e.severity == xmlseveritytype.warning)//區(qū)分是警告還是錯誤
    {
    resultarea.text += "<b>validation warning: </b>" + e.message + "<br/>";
    }
    else
    {
    resultarea.text += "<b>validation errors: </b>" + e.message + "<br/>";
    }
    }
    </script>
    <html>
    <head><title>xmltextreader</title></head>
    <body>
    <form method="post" runat="server">
    <asp:label font-size="10pt" runat="server">上傳xml文檔 在服務(wù)器驗證</asp:label><br/>
    <input type="file" size="40" runat="server" id="fileselector">&nbsp;<br/>
    <asp:button id="uploadbtn" text="提交" onclick="uploadbtn_click" runat="server"/><br/>
    <asp:label font-size="12pt" id="resultarea" runat="server"/><br/>

    </form>
    </body>
    </html>

    發(fā)表評論 共有條評論
    用戶名: 密碼:
    驗證碼: 匿名發(fā)表
    主站蜘蛛池模板: 鄂州市| 东海县| 翁牛特旗| 泸水县| 嘉峪关市| 图片| 石家庄市| 兴业县| 崇阳县| 合川市| 九江市| 滦南县| 湖南省| 桂东县| 论坛| 临沂市| 来宾市| 遂宁市| 西乌| 晋宁县| 府谷县| 荣成市| 芮城县| 右玉县| 若羌县| 谢通门县| 阿拉善盟| 铜川市| 横峰县| 安阳县| 厦门市| 霍林郭勒市| 沿河| 嵩明县| 宁城县| 葵青区| 玉山县| 华安县| 新野县| 娄底市| 雅江县|