使用 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: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>
如果我为名称设置值only,
EmployeeDocument request=EmployeeDocument.Factory.newInstance();
EmployeeType emp=EmployeeType.Factory.newInstance();
emp.setName("Name");
request.setEmployee(emp);
即然后 XMLBeans 生成以下 xml:
<employee>
<name>Name</name>
</employee>
但我需要生成以下类型的 xml,意味着关闭标签< /code> 对于其值未在程序中设置的所有元素:
<employee>
<name>Name</name>
<age/>
<address/>
</employee>
好吧,如果我设置一个空字符串,XMLBeans 会生成
,即emp.setAddress("");
有什么方法可以使用 XMLBeans 满足这样的要求,而不需要设置空字符串。
更重要的是,我们无法为 int 类型的元素 Age 设置空字符串。
任何帮助将不胜感激。
I have following 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>
If i set value only for Name i.e
EmployeeDocument request=EmployeeDocument.Factory.newInstance();
EmployeeType emp=EmployeeType.Factory.newInstance();
emp.setName("Name");
request.setEmployee(emp);
Then XMLBeans generating following xml:
<employee>
<name>Name</name>
</employee>
But i need a following kind of xml to be generated ,means closing tags </>
for all elements whose values are not set in program :
<employee>
<name>Name</name>
<age/>
<address/>
</employee>
well , XMLBeans generating <address/>
if i set an empty string i.e emp.setAddress("");
Is there any way we could meet such requirement using XMLBeans , without setting empty string.
And more over we could not set empty string for element age which is of type int .
Any help would be appreciated.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
XMLSchema 的方法是将
nillable="true"
添加到您的年龄和地址元素中。当您使用 XMLBeans 重新编译 xsd 时,您将拥有.setNilAge()
和.setNilAddress()
方法。生成的 xml 如下所示:顺便说一句,如果可能的话,最好使用
.addNewEmployee()
而不是.setEmployee()
构建文档。这可以避免将员工实例复制到文档中,而成本更高。The XMLSchema way to do this is add
nillable="true"
to your age and address elements. When you recompile the xsd with XMLBeans, you will have.setNilAge()
and.setNilAddress()
methods. The generated xml will look like:By the way, it is better to build up your document using
.addNewEmployee()
instead of.setEmployee()
if possible. This avoids copying the employee instance into the document which is more expensive.