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

发布于 2024-11-25 06:19:11 字数 1385 浏览 1 评论 0原文

我有以下 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

最舍不得你 2024-12-02 06:19:11

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() 构建文档。这可以避免将员工实例复制到文档中,而成本更高。

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:

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

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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文