如何从具有超过 1 个元素的 xsd 到 class 生成 .NET 4.0 classes?

How to generate .NET 4.0 classes from xsd with more than 1 element to class?

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

Xsd 文档如下所示:

<?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 个元素的原因是 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>