我的目標是將導入的嵌入式xsd加載到DataSet中,然後根據xsd生成表格。將導入的嵌入式XSD加載到數據集中
我正在嘗試加載一個DataSet與由多個導入的XSD文件組成的XML Schema。對文件系統中的文件執行此操作是沒有問題的,我只需將它交給主要的xsd文件,並且一切正常,所有xsd導入都已解析。我想要做的是將我的xsd嵌入到我的dll中,這樣它就不會坐在文件系統上。具有嵌入式xsd文件的項目與將要訪問要加載到DataSet中的xsd文件的項目是分開的。
DataSet.ReadXmlSchema方法可以採用流,XmlReader,string uri或XmlTextReader。我沒有任何問題加載DLL,然後使用assembly.GetManifestResourceStream(schemaPath)來獲取主模式文件,如果我的模式只是一個文件,那很好。問題是,一旦我將它傳遞給DataSet.ReadXmlSchema方法,它無法找到任何導入。
我試過使用XmlReader,並使用XmlReaderSettings對象與我爲前面的問題(我知道工程)寫的自定義XML解析器。過去我使用過定製的xml解析器來將一個嵌入到dll中的類似模式加載到一個XmlSchemaSet中,並且它像一個魅力一樣工作。因此,當我進行XmlReader.Create調用時,我傳遞了使用自定義Xml Resolver的XmlReaderSettings,但是當我將此XmlReader傳遞給DataSet.ReadXmlSchema方法時,它也找不到導入的模式文件。我在重載的GetEntity方法中設置了一個斷點,並且它從未被命中。所以XmlReader似乎沒有使用我提供的XmlResolver。我有與XmlTextReader相同的問題。
關於如何將導入的嵌入式模式加載到DataSet中的任何想法?我最後的手段是臨時將嵌入式xsd文件複製到文件系統以創建DataSet,然後將其刪除,儘管我試圖避免這種情況。
不幸的是,我認爲你是對的。感謝您的驗證。 – user817722 2012-03-19 15:14:51