【问题标题】:Including xml attribute when the value is the same as the default与默认值相同时包含xml属性
【发布时间】:2012-08-08 03:29:18
【问题描述】:

我有一个 xsd,我们使用 .net 中的 XMLSerializer 类来生成一个 xml 文档。我们有以下带有默认值的类型

  <xs:complexType name="telephoneType">
<xs:simpleContent>
  <xs:extension base="xs:string">
    <xs:attribute name="type" default="BH">
      <xs:simpleType>
        <xs:restriction base="xs:string">
          <xs:enumeration value="BH"/>
          <xs:enumeration value="AH"/>
          <xs:enumeration value="mobile"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
  </xs:extension>
</xs:simpleContent>

当我们将值设置为默认值 BH 时,它似乎不包含文档中的属性。有没有办法总是包含这些?

【问题讨论】:

  • 这是一种优化。因此,要么删除类型的默认属性,要么在 xml 接收端处理默认情况。
  • 很遗憾,我们无法控制接收方。

标签: .net xml xsd xmlserializer


【解决方案1】:

当属性等于其默认值时,序列化程序将不会创建元素/属性。除非您创建一个自定义方法来序列化您的对象,否则几乎没有什么可做的。

【讨论】:

  • 所以没有办法覆盖这种行为?
  • 不,您需要创建一个客户序列化器/反序列化器。为什么包含该值很重要?
  • 因为接收端超出了我们的控制范围,而且他们通常期望一个属性的值。理想情况下,尽管有值,但最好显示属性。
  • 听起来他们正在对您执行非标准方法,这很遗憾。不幸的是,自定义序列化将是唯一的选择。
  • 我想我们可能不得不删除属性的默认属性
猜你喜欢
  • 2012-12-15
  • 1970-01-01
  • 2012-06-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-06
  • 1970-01-01
  • 2011-03-25
相关资源
最近更新 更多