Xsd 使用XMLBeans为空元素生成结束标记

Xsd 使用XMLBeans为空元素生成结束标记,xsd,marshalling,unmarshalling,xmlbeans,Xsd,Marshalling,Unmarshalling,Xmlbeans,我有以下xsd: <?xml version="1.0" encoding="UTF-8"?> <xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element name="employee" type="employeeType"/> <xs:c

我有以下xsd:

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="employee" type="employeeType"/>
  <xs:complexType name="employeeType">
    <xs:sequence>
      <xs:element type="xs:string" name="name"/>
      <xs:element type="xs:int"  name="age"/> 
      <xs:element type="xs:string" name="address"/>          
    </xs:sequence>
  </xs:complexType>
</xs:schema>
然后XMLBeans生成以下xml:

<employee>
    <name>Name</name>
</employee>
但我需要生成以下类型的xml,这意味着关闭程序中未设置值的所有元素的标记:

<employee>
    <name>Name</name>
    <age/>
    <address/>
</employee>
如果我设置一个空字符串,即emp.setAddress,则生成XMLBeans

我们有没有办法在不设置空字符串的情况下使用XMLBeans来满足这样的要求

此外,我们不能为int类型的元素年龄设置空字符串


任何帮助都将不胜感激。

XMLSchema的方法是将nillable=true添加到您的年龄和地址元素中。当您使用XMLBeans重新编译xsd时,您将拥有.setNilAge和.setNilAddress方法。生成的xml如下所示:

<employee xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <name>Name</name>
  <age xsi:nil="true"/>
  <address xsi:nil="true"/>
</employee>
顺便说一下,如果可能的话,最好使用.addNewEmployee而不是.setEmployee来构建文档。这样可以避免将employee实例复制到更昂贵的文档中

<employee xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <name>Name</name>
  <age xsi:nil="true"/>
  <address xsi:nil="true"/>
</employee>