我正在使用多個XElement
對象來爲我的庫中的多個對象提供一些用戶指定的數據。我試圖避免指定整個XML文件的結構,因爲只要所需的特定元素結構正確,庫不應該關心整個XML的外觀。XElement的XML模式驗證
爲此,我有3個單獨的XSD
文件,這些文件爲我的類的每個需求定義模式,但是我遇到了一些針對模式驗證XElement的問題。沒有解決方法似乎沒有辦法做到這一點。
從MSDN頁面看,XElement.Validate()
擴展方法似乎適合重新驗證較大文件的子元素。 XmlSchemaObject
的論點是造成我的問題,因爲我不能認爲它會出現在任何XElements
。我想我可以通過從我的XmlSchemaSet
中抓取XmlSchemaElement
來解決這個問題,以通過XmlSchemaObject
的說法,但由於XmlSchemaSet
已經定義了所有內容,所以必須這樣做是很奇怪的。
有沒有更好的選擇來驗證XElement
與模式沒有首先驗證整個XDocument
?
或者我應該讓業務層處理應用程序中的模式驗證,並讓庫假定XElement
已經正確組建(我認爲這個選項,但是作爲個人偏好更喜歡避免拋出異常,寧願讓調用方法知道XElement
通過返回參數無效)。
我不知道爲什麼我沒有想到在我自己的'XElement.Validate()'擴展方法中包裝代碼。現在看來很符合你說的。創建一個'XDocument'是另一個好主意,應該也是我發生的事情(我花了太多時間試圖找出如何轉換它,而我錯過了明顯的解決方案)。我會試驗兩個,看看我更喜歡哪一個。 – psubsee2003 2012-04-03 00:22:41