all 元素绑定支持

本主题专门介绍一项旧有技术。现在应通过使用以下链接来创建 XML Web 服务和 XML Web 服务客户端: Windows Communication Foundation.

.NET Framework 为 <all> 元素提供绑定支持。

然而,没有办法在代码中指定 <all> 元素,以便在基于一组类生成 XML 架构文档时创建该元素。

说明

没有办法在代码中指定 <all> 元素,以便在基于一组类生成 XML 架构文档时创建该元素。

<all> 元素提供无序的元素分组。每个子元素可以出现一次,或者根本不出现。

当从 XML 架构文档生成源代码时,Xsd.exe 会将 <all> 元素的每个子元素转换成一个公共字段。这些字段的出现顺序与子元素在 XML 架构中的出现顺序相同。

当基于程序集中的一组类生成 XML 架构文档时,Xsd.exe 会使用 <sequence> 元素(而非 <all> 元素)将与公共字段对应的子元素分组。假设复杂类型中的元素应按顺序出现,而不是无序出现。

导入包含 <all> 元素的架构时,请不要使用顺序保留功能(Xsd.exe 上的 /order 开关)。

示例

输入 XML 架构文档:

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
            targetNamespace="http://example.org/" xmlns="http://example.org/" elementFormDefault="qualified">
    <xsd:element name="complexInstance" type="MyComplexType"/>
    <xsd:element name="field1" type="xsd:string"/>
    <xsd:element name="field2" type="xsd:string"/>
    <xsd:element name="field3" type="xsd:string"/>

    <xsd:complexType name="MyComplexType">
        <xsd:all>
            <xsd:element ref="field1"/>
            <xsd:element ref="field2"/>
            <xsd:element ref="field3"/>
        </xsd:all>
    </xsd:complexType>
</xsd:schema>

基于前面的 XML 架构文档生成的 C# 类:

[System.Xml.Serialization.XmlTypeAttribute(Namespace="http://example.org/")]
 [System.Xml.Serialization.XmlRootAttribute("complexInstance", Namespace="http://example.org/", IsNullable=false)]
public class MyComplexType {
        
    public string field1;
        
    public string field2;
        
    public string field3;
}

基于通过前面的 C# 源代码编译得到的程序集生成的 XML 架构复杂类型:

<xs:complexType name="MyComplexType">
    <xs:sequence>
        <xs:element minOccurs="0" maxOccurs="1" name="field1" type="xs:string" />
        <xs:element minOccurs="0" maxOccurs="1" name="field2" type="xs:string" />
        <xs:element minOccurs="0" maxOccurs="1" name="field3" type="xs:string" />
    </xs:sequence>
</xs:complexType>

可能的特性 绑定支持

id

Xsd.exe 实用工具会忽略旨在提供唯一标识符的 id 特性。

maxOccurs

对于 <all> 元素,除 1 以外的其他任何 maxOccurs 特性值均无效。对于无效值,Xsd.exe 会报错。

请参见 maxOccurs 特性绑定支持 特性。

minOccurs

Xsd.exe 工具会忽略应用于 <all> 元素的 minOccurs 特性。

请参见 minOccurs 特性绑定支持 特性。

可能的父元素:<complexType><extension><group><restriction>

可能的子元素:<annotation><element>