如何正确引用XSD架构?

时间:2017-08-08 17:11:07

标签: c# xml xsd

注意:我查看过this个问题,但仍然无法理解如何在那里正确应用这些信息。

我几乎仍然是XML的新手,但是已经创建了一个像这样开始的XML文件:

<?xml version="1.0" encoding="utf-8"?>
<Configuration xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" >
  <Model>
    <Name>My Configuration</Name>
    <Version>0.0.1</Version>
  </Model>
</Configuration>

XSD看起来像:

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema id="Configuration" xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">
  <xs:element name="Configuration">
    <!-- and so on -->
  </xs:element>
</xs:schema>

现在在我的C#程序中,我可以使用XDocument.Validate()方法对已知的 XSD架构进行验证,并且我可以使用XmlSerializer和从我的XSD生成的类对其进行解密(使用{ {1}})没问题。

但是我试图让XML在XML中引用内联,添加了 对XSD.exe元素的xsi:schemaLocation属性,如下所示:

<Configuration>

我将C#代码构建好(使用<?xml version="1.0" encoding="utf-8"?> <Configuration xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xsi:schemaLocation="http://www.w3.org file:///C:/Users/Me/Data/ConfigSchema.xsd"> 方法),但它总是告诉我所有元素的以下错误消息:

  

无法找到元素''的架构信息。

我做错了什么?我是否需要在XML或XSD中更改其他内容?

更新:我可以通过添加等于XML XmlReader.Create()targetNamepsace xmlns的XSD xsi:schemaLocation来完成这项工作。但是,第一个元素(即包含此命名空间/模式混乱的Configuration元素)的正常反序列化失败了

0 个答案:

没有答案