2012-05-23 116 views
1

我有一個關於如何使用XSD架構來驗證XML格式的問題。XSD架構驗證

我已經成功地使用XSD架構驗證了XML格式。但是,我需要將xx.xsd放在當前項目的主要位置。無論如何,要將xsd模式嵌入到程序集中,以便我不需要始終將xxx.xsd放到可執行程序集的相同位置。我曾嘗試將其嵌入到項目的資源中,但似乎無法在使用VS命令提示符(如resgen xxx.xsd)時重新生成XSD文件。它說擴展名不支持這個命令。

有沒有其他方法可以解決這個問題。

任何建議表示讚賞。

回答

2

步驟1:將XSD添加到您的類庫項目,就像你通常會

第2步:右鍵單擊該XSD文件的屬性,並在生成操作,選擇「嵌入的資源」

步驟3:修改的代碼如下所示從

XmlSchemaSet schemaSet = new XmlSchemaSet() ; 
schemaSet.Add("", XmlReader.Create(xmlSchema)); 

TextReader schemaStream = 
    new StreamReader(Assembly.GetExecutingAssembly().GetManifestResourceStream(xmlSchema)); 
XmlSchemaSet schemaSet = new XmlSchemaSet() ; 
schemaSet.Add("",XmlReader.Create(schemaStream)); 
+0

謝謝羅米爾。您的解決方案適用於我。 –

3

如果你只處理一個XSD(沒有外部引用),那麼@Romil的答案就是你所需要的。但是,如果您轉而使用組件化XSD(通過xsd:include/import/redefine鏈接的一組XSD),那麼解決方案將無法工作。 This post on SO告訴你如何正確解決它;您需要構建和使用您自己的解析器,這將能夠從嵌入式資源中提供這些引用,而且非常重要的是,您需要提供基本URI(通常是使用某種專有方案組成的URL)創建第一個閱讀器。

+0

感謝Petru。我的項目中只有一個XSD,所以Romil的解決方案適用於我。感謝您的建議。它將在未來爲我工作。 –