本主题专门介绍一项旧有技术。现在应通过使用以下链接来创建 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> 元素,除 请参见 maxOccurs 特性绑定支持 特性。 |
minOccurs |
Xsd.exe 工具会忽略应用于 <all> 元素的 minOccurs 特性。 请参见 minOccurs 特性绑定支持 特性。 |
可能的父元素:<complexType>、<extension>、<group>、<restriction>
可能的子元素:<annotation>、<element>