anyAttribute 元素绑定支持

.NET Framework 为 <anyAttribute> 元素提供部分绑定支持。

在从 XML 架构文档生成源代码时,Xsd.exe 会将 <anyAttribute> 元素转换为属于 XmlAttribute 类型且具有 XmlAnyAttributeAttribute 属性的字段。

说明

<anyAttribute> 通配符允许任意属性(任意名称或简单类型的属性)出现在 XML 实例文档中的给定元素中,但有一些约束。

在从 XML 架构文档生成源代码时,Xsd.exe 会将 <anyAttribute> 元素转换为属于 XmlAttribute 类型且具有 XmlAnyAttributeAttribute 属性的字段。 此属性 (Attribute) 允许类表示任意 XML 属性 (Attribute),而无需将它们绑定到由类的其他可能字段或属性 (Property) 标识的非 XML 类型上。

当基于程序集中的一组类生成 XML 架构文档时,Xsd.exe 会执行反向转换:将类型为 System.Xml.XmlAttribute 且具有 XmlAnyAttributeAttribute 属性 (Attribute) 的字段或属性 (Property) 转换为 <anyAttribute> 元素。

namespace 和 processContents 属性

在生成 XML 架构定义或类的过程中,将忽略 namespaceprocessContents 属性。 这意味着,无论这些属性在原始 XML 架构定义中具有什么值,当 Xsd.exe 从该定义生成类,然后基于这些类生成另一个 XML 架构时,所生成的 XML 架构的 <anyAttribute> 元素都不再具有这些属性。 因此,所生成的架构将恢复为下列默认值:

  • namespace="##any"namespace 属性指定必须在其中定义属性的命名空间。 如果值为 ##any,则允许使用任何命名空间。

  • processContents="strict":在验证实例 XML 文档是否符合为它指定的 XML 架构时,应确保根据指定的命名空间来验证所有的元素类型。 如果无法识别元素类型,则验证将失败。

同样,在从 XML 文档反序列化为对象的过程中,将忽略 namespaceprocessContents 属性。 而 XmlSerializer 类的行为就好像这两个属性固定为下列值:

  • namespace="##any":这是默认值。

  • processContents="lax":当验证实例 XML 文档是否符合为它指定的 XML 架构时,只有当可以获取属性的命名空间时才对该属性进行验证;否则,应确保无法识别的属性由格式良好的 XML 组成。

Note注意:

即使在运行时,.NET Framework 也假定 processContents="lax",.NET Framework 在部署时生成在其中隐式指定默认 processContents="strict" 的 XML 架构定义。

namespaceprocessContents 属性出现在 <any> 元素中时,Xsd.exe 和 XmlSerializer 类将为它们提供相同的绑定。

可能的属性 绑定支持

id

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

namespace

请参见本主题中的“namespace 和 processContents 属性”一节。

processContents

请参见本主题中的“namespace 和 processContents 属性”一节。

可能的元素:<attributeGroup><complexType><extension><restriction>

可能的子元素:<annotation>

请参见

参考

XmlAnyAttributeAttribute

Footer image

版权所有 (C) 2007 Microsoft Corporation。保留所有权利。