如何从具有多个元素的xsd生成.NET 4.0类到类?

时间:2016-06-21 17:12:31

标签: c# xml xsd

我遵循此问题How to generate .NET 4.0 classes from xsd?的解决方案来生成C#类。但不知何故,它只生成第一个元素。有什么方法可以同时生成所有元素吗?

Xsd doc如下所示:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
    <xs:element name="advice_file">
    </xs:element>
    <xs:element name="vendorMerchID" type="xs:string">
    </xs:element>
</xs:schema>

1 个答案:

答案 0 :(得分:0)

您只获得1个元素的原因是因为有效xml必须始终具有单个外部根节点。让我感到惊讶的是,第二个节点完全被忽略了,没有抛出任何异常。

您的xsd代表以下xml

<advice_file/>

要拥有这两个元素,您需要按如下方式编写xsd:

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
    <xs:element name="myRoot">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="advice_file" type="xs:string"/>
                <xs:element name="vendorMerchID" type="xs:string"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
</xs:schema>

对于xml结构:

<myRoot>
    <advice_file/>
    <vendorMerchID/>
</myRoot>

或者,如果您的xml是这样的:

<advice_file>
    <vendorMerchID/>
</advice_file>

使用xsd:

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
    <xs:element name="advice_file">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="vendorMerchID" type="xs:string"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
</xs:schema>