针对XML在Visual Studio中生成的自己的架构,验证失败

时间:2019-04-02 08:48:25

标签: xml visual-studio xsd xmlhttprequest xsd-validation

我有一个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。预先感谢。

0 个答案:

没有答案