我有一个XML,在针对其架构进行验证之后,我打算将其发送出去。我在Visual Studio中为此XML生成了架构,它提供了3种不同的XSD,因为XML包含3种不同的命名空间。但是,当我针对主模式验证相同的XML实例时,它在一种记录类型下失败。
我尝试处理XML,但是这中断了我计划发送的http请求。还尝试过SOF的多种解决方案,但到目前为止没有任何帮助。
我的XML看起来像这样-
<?xml version="1.0"?>
<updateList xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:messages_namespace" xmlns:listRel="urn:relationships_namespace" xmlns:pc="urn:core_namespace">
<pc:record xsi:type="listRel:Customer" internalId="46" xmlns:listRel="urn:relationships_namespace">
<listRel:companyName>T Tax</listRel:companyName>
</pc:record>
<pc:record xsi:type="listRel:Customer" internalId="44" xmlns:listRel="urn:relationships_namespace">
<listRel:companyName>S Tax</listRel:companyName>
</pc:record>
<pc:record xsi:type="listRel:Customer" internalId="45" xmlns:listRel="urn:relationships_namespace">
<listRel:companyName>K Tax</listRel:companyName>
</pc:record>
</updateList>
生成的主模式如下所示
<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:pc="urn:core_namespace" xmlns:listRel="urn:relationships_namespace" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xs="http://www.w3.org/2001/XMLSchema" attributeFormDefault="unqualified" elementFormDefault="qualified" targetNamespace="urn:messages_namespace">
<xsd:import namespace="urn:core_namespace" schemaLocation="UpdateCustomer1.xsd"/>
<xsd:element name="updateList">
<xsd:complexType>
<xsd:sequence>
<xsd:element maxOccurs="unbounded" ref="pc:record" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xs:schema>
仅在Visual Studio中就对架构文件进行了验证,但是当我向上述架构提供与输入实例相同的XML并执行validate实例时,它将产生此错误-
这是无效的xsi:type'urn:relationships_namespace:Customer'。
第二个模式是这样的-
<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:tns="urn:core_namespace" attributeFormDefault="unqualified" elementFormDefault="qualified" targetNamespace="urn:core_namespace" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:import namespace="urn:relationships_namespace" schemaLocation="UpdateCustomer2.xsd" />
<xs:element name="record">
<xs:complexType>
<xs:sequence>
<xs:element xmlns:q1="urn:relationships_namespace" ref="q1:companyName" />
</xs:sequence>
<xs:attribute name="internalId" type="xs:unsignedByte" use="required" />
</xs:complexType>
</xs:element>
</xs:schema>
第三-
<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:tns="urn:relationships_namespace" attributeFormDefault="unqualified" elementFormDefault="qualified" targetNamespace="urn:relationships_namespace" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="companyName" type="xs:string" />
</xs:schema>
如果有人可以帮助在Visual Studio中对其进行验证,我们将深表感谢。我可以使用同一段代码,但是随后的过程将完全改变,因此坚持使用VS。预先感谢。