【发布时间】:2014-05-01 23:45:31
【问题描述】:
我在编辑一些 XML 文件时尝试使用 Visual Studio 的架构验证。这些文件包含供DataContractSerializer 读取的序列化对象。
<?xml version="1.0" encoding="utf-8" ?>
<MyRoot xmlns="http://schemas.datacontract.org/2004/07/MyDomain"
xmlns:lib="http://schemas.datacontract.org/2004/07/MyLibrary"
xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
<MyList xmlns:a="http://schemas.microsoft.com/2003/10/Serialization/Arrays">
<a:anyType i:type="lib:MyObject">
<lib:Identifier>my-identifier</lib:Identifier>
<lib:MyProperty>my-property-value</lib:MyProperty>
</a:anyType>
<a:anyType i:type="lib:MyOtherObject">
<lib:Identifier>my-identifier</lib:Identifier>
<lib:MyOtherProperty>my-other-property-value</lib:MyOtherProperty>
</a:anyType>
</MyList>
</MyRoot>
我使用 Visual Studio 中的“创建架构”菜单选项来生成 XSD 文件,但编辑器仍然为 <a:anyType 元素显示此错误:
This is an invalid xsi:type 'http://schemas.datacontract.org/2004/07/MyLibrary:MyObject'
我尝试为“http://schemas.microsoft.com/2003/10/Serialization/Arrays”命名空间编辑 XSD 文件,但到目前为止我还未能消除该错误。这是 Visual Studio 生成的 XSD 文件。
<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:tns="http://schemas.microsoft.com/2003/10/Serialization/Arrays" attributeFormDefault="unqualified" elementFormDefault="qualified" targetNamespace="http://schemas.microsoft.com/2003/10/Serialization/Arrays" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:import namespace="http://schemas.datacontract.org/2004/07/MyLibrary" />
<xs:element name="anyType">
<xs:complexType>
<xs:sequence>
<xs:element xmlns:q1="http://schemas.datacontract.org/2004/07/MyLibrary" ref="q1:MyProperty" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
【问题讨论】:
-
您可以包含您导入的架构吗? schemas.datacontract.org/2004/07/MyLibrary
标签: xml visual-studio serialization xsd datacontractserializer