在.NET Framework中輕鬆處理XML資料(3-1)

來源:互聯網
上載者:User
??帶驗證的瀏覽器

??XmlValidatingReader類實現了XmlReader類,它供給了支撐多種類型的XML驗證:DTD,XML-Data Reduced(XDR)架構,以及XSD,DTD和XSD都是W3C官方推薦的。而XDR是Microsoft早期用於處理XML構架的一種格局。

??你可以用XmlVlidatingReader類往驗證XML文檔和XML片段。XmlValidatingReader類工作在XML瀏覽器上面---是一個典範的XMLTextReader類執行個體。XMLTextReade用於讀取文檔的節點,但是XmlVlidatingReader根據需要的驗證類型往驗證每一個XML塊。

??XmlVlidatingReader類只實現了非常小的XML瀏覽器必備的一個功效子集。該類總是工作在一個已存在的XML瀏覽器上面,它監督方法和屬性。假如你深進該類的結構函數,你會發明它很明顯的依附一個已存在的文本瀏覽器。帶驗證的XML瀏覽器不能直接的從一個檔案或一個URL序列化。該類的結構函數列表如下:

public XmlValidatingReader(XmlReader);

public XmlValidatingReader(Stream, XmlNodeType, XmlParserContext);

public XmlValidatingReader(string, XmlNodeType, XmlParserContext);

??帶驗證的XML瀏覽器能分析任何的XML片段,XML片段通過一個string或者一個stream供給,也可以分析任何瀏覽器供給的XML文檔。

??XmlVlidatingReader類中有重大轉變的方法非常少(相對其它reader類來說),另外對 Read,它有Skip和ReadTypedValue方法。Skip方法跳過當前節點所有的子節點(你不能跳過不良格局的XML文本,它是相當有用的演算法),Skip方法也驗證被跳過的內容。ReadTypedValue方法返回指定 XML 結構描述 (XSD) 類型對應的CLR類型。假如該方法找到了XSD類型對應的CLR類型,則返回CLR的類型名。假如找不到,則把該節點的值作為一個字串值返回。

??帶驗證的XML瀏覽器正如其名,它是一個基於節點的瀏覽器,它驗證當前節點的結構是否符合當前的schema。驗證是增量式的;它沒有方法返回表現文檔是否有效布爾值。通常你都是用Read方法往讀輸進的XML文檔。實際上,你也可以用帶驗證的瀏覽器往讀XML文檔。在每一步中,當前被拜訪的節點的結構是否與指定的schema符合,假如不符合,拋出一個異常。圖四是一個把持台利用程式,它有一個要輸進檔案名稱的命令列,最後輸出驗證成果。

Figure 4 Console App

using System;

using System.Xml;

using System.Xml.Schema;



class MyXmlValidApp

{

public MyXmlValidApp(String fileName)

{

try {

Validate(fileName);

}

catch (Exception e) {

Console.WriteLine('Error:\t{0}', e.Message);

Console.WriteLine('Exception raised: {0}',

e.GetType().ToString());

}

}



private void Validate(String fileName)

{

XmlTextReader xtr = new XmlTextReader(fileName);

XmlValidatingReader vreader = new XmlValidatingReader(xtr);

vreader.ValidationType = ValidationType.Auto;

vreader.ValidationEventHandler = new

ValidationEventHandler(this.ValidationEventHandle);



vreader.Read();

vreader.MoveToContent();



while (vreader.Read()) {}



xtr.Close();

vreader.Close();

}



public void ValidationEventHandle(Object sender,

ValidationEventArgs args)

{

Console.Write('Validation error: ' args.Message '\r\n');

}



public static void Main(String[] args)

{

MyXmlValidApp o = new MyXmlValidApp(args[0]);

return;

}

}

以上就是在.NET Framework中輕鬆處理XML資料(3-1) 的內容,更多相關內容請關注topic.alibabacloud.com(www.php.cn)!

  • 相關文章

    聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.