在我的XSD中考虑以下类型定义:
<xs:complexType name="ED" mixed="true">
<xs:complexContent>
<xs:extension base="BIN">
<!-- I cut some data here -->
</xs:extension>
</xs:complexContent>
</xs:complexType>
我发现JAXB很难为mixed
元素生成代码。
我尝试使用<jaxb:globalBindings generateMixedExtensions="true"/>
,但这种支持效果不佳并生成了笨拙的List<Serializable>
代码。
所以我想我可以通过自定义绑定修改一些元素:
<bindings
xmlns="http://java.sun.com/xml/ns/jaxb"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
version="1.0">
<bindings schemaLocation="../../processable/coreschemas/datatypes-base.xsd">
<bindings node="//xs:complexType[@mixed='true']" multiple="true">
<property>
<javaType><!-- What do I do here? --></javaType>
</property>
</bindings>
</bindings>
</bindings>
基本上,我希望指定mixed=true
的所有元素都具有自定义value
或content
字段(String
),其中包含标记之间的CDATA。例如,对于我的ED
类型,它在XML中可能是这样的,title元素使用ED
作为其类型:
<title>Hello, I'm a title!</title>
应该以{{1}}为内容。
我该怎么做?
对于您感兴趣的人:我正在尝试为HL7v3 CDA规范生成代码。