Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/295.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# xsd架构错误找到以元素开头的无效内容,此时不需要子元素_C#_Asp.net_Xml_Xsd - Fatal编程技术网

C# xsd架构错误找到以元素开头的无效内容,此时不需要子元素

C# xsd架构错误找到以元素开头的无效内容,此时不需要子元素,c#,asp.net,xml,xsd,C#,Asp.net,Xml,Xsd,我正在针对输入xml创建一个模式,其中我的主要要求是将ParcelNumber或WorkArea设置为必填项,因此这里是我的输入xml <?xml version="1.0" encoding="utf-8"?> <NOCPlantMapRequest xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <NOCTy

我正在针对输入xml创建一个模式,其中我的主要要求是将
ParcelNumber
WorkArea
设置为必填项,因此这里是我的输入xml

<?xml version="1.0" encoding="utf-8"?>
<NOCPlantMapRequest xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <NOCTypeID>0</NOCTypeID>
  <WorkLocation>
    <ParcelNumber>4545</ParcelNumber>
    <Roads>
      <WorkLocationRoad>
        <RoadName>chennai road</RoadName>
      </WorkLocationRoad>
    </Roads>
    <WorkArea>
      <WorkArea>
        <Coordinates>
          <WorkLocationCoordinate>
            <CoordinateX>56</CoordinateX>
            <CoordinateY>23</CoordinateY>
          </WorkLocationCoordinate>
        </Coordinates>
        <Communities />
      </WorkArea>
    </WorkArea>
  </WorkLocation>
</NOCPlantMapRequest>

我在.xsd中检查了visual studio和

,LocationType只接受ParcelNumber或工作区,找不到道路或社区

在xsd:choice中包含2个xsd:sequences也有点不寻常,通常您只需执行以下操作:

<xsd:complexType name="LocationType">
  <xsd:all>
    <xsd:element name="ParcelNumber" type="ParcelNumberType" maxOccurs="1"/>
    <xsd:element name="WorkArea" type="WorkAreaType" maxOccurs="1"/>
  </xsd:all>
</xsd:complexType>

这是一个完整的XSD,应该验证您的XML示例:

<?xml version="1.0" encoding="utf-8"?>
<xsd:schema xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"
            attributeFormDefault="unqualified" elementFormDefault="qualified">
    <xsd:element name="NOCPlantMapRequest">
        <xsd:complexType>
            <xsd:sequence>
                <xsd:element name="NOCReference" minOccurs="0" type="xsd:string"/>
                <xsd:element name="NOCTypeID" minOccurs="0" type="xsd:unsignedByte"/>
                <xsd:element name="NOCTypeName" minOccurs="0" type="xsd:string"/>
                <xsd:element name="ApplicationName" minOccurs="0" type="xsd:string"/>
                <xsd:element name="Applicationtype" minOccurs="0" type="xsd:string"/>
                <xsd:element name="RelatedNOCRefNumber" minOccurs="0" type="xsd:string"/>
                <xsd:element name="WorkLocation" minOccurs="1" maxOccurs="1" type="LocationType"></xsd:element>
            </xsd:sequence>
        </xsd:complexType>
    </xsd:element>
    <xsd:complexType name="LocationType">
        <xsd:all>
            <xsd:element name="ParcelNumber" type="ParcelNumberType" maxOccurs="1"/>
            <xsd:element name="WorkArea" type="WorkAreaType" maxOccurs="1"/>
            <xsd:element name="Roads" type="RoadListType" maxOccurs="1"/>
        </xsd:all>
    </xsd:complexType>

    <xsd:complexType name="RoadListType">
        <xsd:sequence>
            <xsd:element name="WorkLocationRoad" type="WorkLocationRoadType" minOccurs="0" maxOccurs="unbounded"/>
        </xsd:sequence>
    </xsd:complexType>

    <xsd:complexType name="WorkLocationRoadType">
        <xsd:sequence>
            <xsd:element name="RoadName" type="xsd:string"/>
        </xsd:sequence>
    </xsd:complexType>

    <xsd:complexType name="CommunitiesListType">
        <xsd:sequence>
            <xsd:element name="WorkLocationRoad" type="WorkLocationRoadType" minOccurs="0" maxOccurs="unbounded"/>
        </xsd:sequence>
    </xsd:complexType>


    <xsd:simpleType name="ParcelNumberType">
        <xsd:restriction base="xsd:string"/>
    </xsd:simpleType>

    <xsd:complexType name="WorkAreaType">
        <xsd:sequence>
            <xsd:element name="WorkArea" minOccurs="0" maxOccurs="unbounded">
                <xsd:complexType>
                    <xsd:sequence>
                        <xsd:element name="Coordinates" minOccurs="1" type="CoordinatesType"/>
                        <xsd:element name="Communities" type="CommunitiesListType" maxOccurs="1"/>
                    </xsd:sequence>
                </xsd:complexType>
            </xsd:element>
        </xsd:sequence>
    </xsd:complexType>

    <xsd:complexType name="CoordinatesType">
        <xsd:sequence>
            <xsd:element name="WorkLocationCoordinate" type="WorkLocationCoordinateType"/>
        </xsd:sequence>
    </xsd:complexType>

    <xsd:complexType name="WorkLocationCoordinateType">
        <xsd:sequence>
            <xsd:element name="CoordinateX" type="xsd:string"/>
            <xsd:element name="CoordinateY" type="xsd:string"/>
        </xsd:sequence>
    </xsd:complexType>
</xsd:schema>

是吗?如果Abel非常擅长帮你解决XSD问题,但他在那里来回奔波,无法解决你的问题,你应该重新审视一下自己。你是一名冠军,让我做进一步的测试,尽管最初的测试是成功的,但在接受答案之前
<xsd:complexType name="LocationType">
  <xsd:all>
    <xsd:element name="ParcelNumber" type="ParcelNumberType" maxOccurs="1"/>
    <xsd:element name="WorkArea" type="WorkAreaType" maxOccurs="1"/>
  </xsd:all>
</xsd:complexType>
<?xml version="1.0" encoding="utf-8"?>
<xsd:schema xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"
            attributeFormDefault="unqualified" elementFormDefault="qualified">
    <xsd:element name="NOCPlantMapRequest">
        <xsd:complexType>
            <xsd:sequence>
                <xsd:element name="NOCReference" minOccurs="0" type="xsd:string"/>
                <xsd:element name="NOCTypeID" minOccurs="0" type="xsd:unsignedByte"/>
                <xsd:element name="NOCTypeName" minOccurs="0" type="xsd:string"/>
                <xsd:element name="ApplicationName" minOccurs="0" type="xsd:string"/>
                <xsd:element name="Applicationtype" minOccurs="0" type="xsd:string"/>
                <xsd:element name="RelatedNOCRefNumber" minOccurs="0" type="xsd:string"/>
                <xsd:element name="WorkLocation" minOccurs="1" maxOccurs="1" type="LocationType"></xsd:element>
            </xsd:sequence>
        </xsd:complexType>
    </xsd:element>
    <xsd:complexType name="LocationType">
        <xsd:all>
            <xsd:element name="ParcelNumber" type="ParcelNumberType" maxOccurs="1"/>
            <xsd:element name="WorkArea" type="WorkAreaType" maxOccurs="1"/>
            <xsd:element name="Roads" type="RoadListType" maxOccurs="1"/>
        </xsd:all>
    </xsd:complexType>

    <xsd:complexType name="RoadListType">
        <xsd:sequence>
            <xsd:element name="WorkLocationRoad" type="WorkLocationRoadType" minOccurs="0" maxOccurs="unbounded"/>
        </xsd:sequence>
    </xsd:complexType>

    <xsd:complexType name="WorkLocationRoadType">
        <xsd:sequence>
            <xsd:element name="RoadName" type="xsd:string"/>
        </xsd:sequence>
    </xsd:complexType>

    <xsd:complexType name="CommunitiesListType">
        <xsd:sequence>
            <xsd:element name="WorkLocationRoad" type="WorkLocationRoadType" minOccurs="0" maxOccurs="unbounded"/>
        </xsd:sequence>
    </xsd:complexType>


    <xsd:simpleType name="ParcelNumberType">
        <xsd:restriction base="xsd:string"/>
    </xsd:simpleType>

    <xsd:complexType name="WorkAreaType">
        <xsd:sequence>
            <xsd:element name="WorkArea" minOccurs="0" maxOccurs="unbounded">
                <xsd:complexType>
                    <xsd:sequence>
                        <xsd:element name="Coordinates" minOccurs="1" type="CoordinatesType"/>
                        <xsd:element name="Communities" type="CommunitiesListType" maxOccurs="1"/>
                    </xsd:sequence>
                </xsd:complexType>
            </xsd:element>
        </xsd:sequence>
    </xsd:complexType>

    <xsd:complexType name="CoordinatesType">
        <xsd:sequence>
            <xsd:element name="WorkLocationCoordinate" type="WorkLocationCoordinateType"/>
        </xsd:sequence>
    </xsd:complexType>

    <xsd:complexType name="WorkLocationCoordinateType">
        <xsd:sequence>
            <xsd:element name="CoordinateX" type="xsd:string"/>
            <xsd:element name="CoordinateY" type="xsd:string"/>
        </xsd:sequence>
    </xsd:complexType>
</xsd:schema>