带有XSD Schema的DataSet / DataTables会生成错误排序的文件

时间:2018-03-20 21:19:51

标签: xml xsd dataset

我正在尝试通过XSD架构获取一个表格,并将表格写入经过验证的XML。

StreamReader sr = new StreamReader(ms);
ds.ReadXmlSchema("myschema.xsd");

//<some data filling>

ds.WriteXml("output.xml");

输出文件看起来没问题,但仔细观察后我发现它不会验证,因为ds.WriteXml显然首先写入所有非复杂类型,然后是复杂类型。 (实际上是数据集中的DataTables)

当前生成的输出文件(为简洁起见,已简化):

<Main>
    <Element_A>Value_A</Element_A>
    <Element_B>Value_B></Element_B>
    <Complex_Type_1>.... </Complex_Type_1>
</Main>

实际上它应该生成:

<Main>
    <Element_A>Value_A</Element_A>
    <Complex_Type_1>.... </Complex_Type_1>
    <Element_B>Value_B></Element_B>
</Main>

有没有办法影响子元素的编写顺序?

我正在使用的(再次,大大简化的)XSD文件清楚地说明了正确序列中的元素:

<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
    <xs:element name="Main">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="Element_A">
                    <xs:simpleType>
                        <xs:restriction base="xs:string">
                            <xs:maxLength value="30"/>
                        </xs:restriction>
                    </xs:simpleType>
                </xs:element>
                <xs:element name="Complex_Type_1">
                    <xs:complexType>
                        <xs:sequence>
                                    .......
                        </xs:sequence>
                    </xs:complexType>
                </xs:element>
                <xs:element name="Element_B" minOccurs="0">
                    <xs:simpleType>
                        <xs:restriction base="xs:string">
                            <xs:maxLength value="35"/>
                        </xs:restriction>
                    </xs:simpleType>
                </xs:element>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
</xs:schema>

0 个答案:

没有答案