我有一個關於如何使用XSD架構來驗證XML格式的問題。XSD架構驗證
我已經成功地使用XSD架構驗證了XML格式。但是,我需要將xx.xsd放在當前項目的主要位置。無論如何,要將xsd模式嵌入到程序集中,以便我不需要始終將xxx.xsd放到可執行程序集的相同位置。我曾嘗試將其嵌入到項目的資源中,但似乎無法在使用VS命令提示符(如resgen xxx.xsd)時重新生成XSD文件。它說擴展名不支持這個命令。
有沒有其他方法可以解決這個問題。
任何建議表示讚賞。
我有一個關於如何使用XSD架構來驗證XML格式的問題。XSD架構驗證
我已經成功地使用XSD架構驗證了XML格式。但是,我需要將xx.xsd放在當前項目的主要位置。無論如何,要將xsd模式嵌入到程序集中,以便我不需要始終將xxx.xsd放到可執行程序集的相同位置。我曾嘗試將其嵌入到項目的資源中,但似乎無法在使用VS命令提示符(如resgen xxx.xsd)時重新生成XSD文件。它說擴展名不支持這個命令。
有沒有其他方法可以解決這個問題。
任何建議表示讚賞。
步驟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));
如果你只處理一個XSD(沒有外部引用),那麼@Romil的答案就是你所需要的。但是,如果您轉而使用組件化XSD(通過xsd:include/import/redefine鏈接的一組XSD),那麼解決方案將無法工作。 This post on SO告訴你如何正確解決它;您需要構建和使用您自己的解析器,這將能夠從嵌入式資源中提供這些引用,而且非常重要的是,您需要提供基本URI(通常是使用某種專有方案組成的URL)創建第一個閱讀器。
感謝Petru。我的項目中只有一個XSD,所以Romil的解決方案適用於我。感謝您的建議。它將在未來爲我工作。 –
謝謝羅米爾。您的解決方案適用於我。 –