注意:我查看过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元素)的正常反序列化失败了