2013-03-06 96 views
0

我有一個用C#編寫的程序,它根據模式驗證XML文件。System.IO.DirectoryNotFoundException:針對XSD驗證XML時

有時,當我打電話xmlSchemaCollection.Add(null, schemaFileName)其中xmlSchemaCollectionXmlSchemaCollectionschemaFileName是URI模式文件獲取:

「System.IO.DirectoryNotFoundException:找不到 路徑的一部分」。

具有架構的文件存在於本地光盤上,並且每個人都擁有讀取權限。這種情況發生在100次左右的隨機數中。

有沒有人見過這個?

+0

你在schemaFileName中有哪些URI? – CSharp 2013-03-06 09:34:46

+0

schemaFileName ==「C:\\ BrackeGis \\ xmlschema \\ BGO-Info-1_2.xsd」 – Eklund 2013-03-06 10:12:03

回答

0

您的模式引用了另一個模式,並且解析器試圖從(不存在的)文件位置打開它。你可以發佈xsd的第一行嗎?

+0

模式看起來像<?xml version =「1.0」encoding =「UTF-8」?> \t \t \t ... \t – Eklund 2013-03-06 10:01:38

0

這樣寫

sc.Add(null, "DataSet1.xsd"); 

添加DataSet1.xsd到項目,並設置屬性「複製到輸出目錄」爲「始終複製」。 (右擊DataSet1.xsd並選擇屬性來設置該屬性)

希望這將幫助你...

編輯

我已經創建了我的系統相同的路徑和相同的架構名稱您可以執行以下代碼而無任何例外:

try 
     { 
      XmlSchemaCollection sc = new XmlSchemaCollection(); 
      sc.ValidationEventHandler += new ValidationEventHandler(sc_ValidationEventHandler); 

      var schemaFileName = "C:\\BrackeGis\\xmlschema\\BGO-Info-1_2.xsd"; 

      sc.Add(null, schemaFileName); 
     } 
     catch (Exception ex) 
     { 
      Console.WriteLine(ex); 
     } 

您創建的路徑中必定存在一些錯誤。 。 。

+0

不幸的是,這不是我的程序負責XSD。 – Eklund 2013-03-06 10:11:14

+0

它也適用於我的電腦。但是在運行程序的服務器上,有時候會出現這個問題,但遠不止於此。 – Eklund 2013-03-06 11:09:31