2013-03-06 98 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