从 XSD 生成 XML 中的自定义属性

Posted

技术标签:

【中文标题】从 XSD 生成 XML 中的自定义属性【英文标题】:Generate custom attribute in XML from XSD 【发布时间】:2016-01-27 17:52:17 【问题描述】:

我正在尝试使用 JAXB 编组为 xml。

我的要求

如果任何元素的值为 null,则 xml 应该将该元素的属性设置为 nullable="true"

我尝试将 minoccurs="1", nillable="true" 放在 XSD 中,但它在我的 xml 中给了我 nil="true",但我想显示为 nullable ="true" 完全在我的 xml 中。

     <xs:sequence>
     <xs:element name="itemName" type="xs:string" />
     <xs:element name="purchasedOn" type="xs:date" minOccurs="1" nillable="true"/>
     <xs:element name="amount" type="xs:decimal" />
    </xs:sequence>

在我的 XML 中:

 <purchasedOn xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/>

如果我错了,请纠正我。

【问题讨论】:

你想让属性说元素 可以是 null 还是 is null ? 可为空意味着该元素可以为空。听起来您需要为此目的定义自己的定制属性。请问,空元素标签有什么问题? 如果你有一个 null 属性,如果它不能为空,它所属的元素里面会是什么? 让我们continue this discussion in chat。 【参考方案1】:
<xs:complexType name="CustomDate">
<xs:simpleContent>
<xs:extension base="xs:date">
<xs:attribute name="nullable" type="xs:string">
</xs:attribute>
</xs:extension>
</xs:simpleContent>
</xs:complexType>

【讨论】:

以上是关于从 XSD 生成 XML 中的自定义属性的主要内容,如果未能解决你的问题,请参考以下文章

自定义布局,丢失 attrs.xml 中的自定义属性

为啥在 XSD 中定义为属性时,自动生成的类中的字段会序列化为元素?

如何定义XSD并在XML中使用XSD

没有 attrs.xml 文件的自定义 xml 属性

如何使用自定义 XSD 架构编写 XML?

Android中的自定义属性attrs