我有下一个问题。我的 XSD 架构“searchevents.xsd”是:
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema elementFormDefault="qualified"
targetNamespace="http://company/searchevents.xsd"
xmlns="http://company/searchevents.xsd" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:complexType name="SearchEventType">
<xs:sequence>
<xs:element minOccurs="0" name="Code" nillable="true" type="StringType"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="StringType">
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute default="false" name="return"
type="xs:boolean" use="optional"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
<xs:element name="SearchEvents" type="SearchEventType"/>
</xs:schema>
可以看出,我有一个名为“代码”的元素,它是 xs:string 类型,具有 nillable=true 和属性“return”。
当我从 xsd shema 生成 java 对象时,我设置了绑定参数:
<globalBindings generateElementProperty="false">
StringType 类是使用以下语法生成的:
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "StringType", propOrder = { "value" })
public class StringType {
@XmlValue
protected String value;
@XmlAttribute(name = "return")
protected Boolean _return;
...
和
类 SearchEventType 包括下一部分代码:
@XmlElement(name = "Code", nillable = true)
protected StringType code;
当我执行封送处理时,如果我不初始化元素“代码”,我会得到下一个 XML 结构(没关系)
<SearchEvents xmlns="http://company/searchevents.xsd">
<Code xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/>
</SearchEvents>
当我设置元素值和属性时,我得到下一个 XML(没关系):
<SearchEvents xmlns="http://company/searchevents.xsd">
<Code return="true">asdf</Code>
</SearchEvents>
问题是当我设置属性而不设置值时。我得到下一个 XML(这是不行的):
<SearchEvents xmlns="http://company/searchevents.xsd">
<Code return="true"/>
</SearchEvents>
因为未设置值(我尝试输入 null 或空字符串 ("")),我希望下一个 XML 结构:
<SearchEvents xmlns="http://company/searchevents.xsd">
<Code return="true" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/>
</SearchEvents>
为什么我没有得到这样的结果。我错过了什么?
此致
托马兹