2011-03-28 131 views
0

是否可以一起使用XML模式驗證和XMLSerializer?XMLSerialization和XML模式驗證

我的項目目前使用XMLSerializer。要驗證架構,我們正在編程檢查值如:

if(String.IsNullOrEmpty(person.Name)) 
    throw new Exception(); 

謝謝!

+0

是架構中存在的'驗證'信息嗎?或者,是否針對不在模式中的規則檢查xml? – 2011-03-28 08:15:58

+0

相似的問題:[模式驗證XML](http://stackoverflow.com/questions/4584080/schema-validation-xml/4639448#4639448) – 2011-03-28 08:23:22

+0

@Devendra:目前,驗證規則在代碼中實現。但是如果可以使用XML模式驗證,驗證信息將被放置在XSD文件中。 – Ian 2011-03-28 09:03:06

回答

1

我建議使用XmlValidatingReader來驗證模式。例如,請參閱http://www.codeproject.com/KB/XML/Serialization.aspx ...

+0

XMLValidatingReader在.NET 2.0中已棄用 XmlValidatingReader類在Microsoft .NET Framework 2.0版中已過時。您可以使用XmlReaderSettings類和Create方法創建一個驗證XmlReader實例。有關更多信息,請參閱使用XmlReader驗證XML數據。 – 2012-08-07 19:04:35

0

實際上,您可以在XML中提供一個XSD。當您使用XMLSerializer讀取它時,如果XML與XSD不匹配,它將引發異常。

2

您可以使用元素限制元素爲xsd添加一些額外的檢查。每種類型都有一些可應用於類型/元素的方面 - 從簡單的最小/最大長度到正則表達式。

您甚至可以更進一步並使用appinfo xsd元素,您可以在其中添加自定義規範等驗證檢查。但是,此步驟需要您分別解析每個xml節點,因爲正常的Xml架構驗證不會觸發appinfo功能。

作爲最後的手段,你甚至可以看看Schematron,它是一種向xsd添加相當複雜的驗證的形式化方法,但它本身有點複雜,並且在很多情況下都是矯枉過正的。