使用JAXB在嵌套元素上添加命名空间

时间:2012-09-03 15:59:11

标签: java xml namespaces jaxb

  

可能重复:
  JAXB marshalling XMPP stanzas

我在stackoverflow上做了一些搜索,并没有真正找到我需要的答案。

我在尝试使用JAXB操作命名空间时遇到了一些麻烦。我们来吧。

我需要以下格式的XML

<root xmlns="http://namespace/root">

    <item xmlns="http://namespace/item">
        <id>1</id>
        <name>First</name>
    </item>

    <item xmlns="http://namespace/item">
        <id>2</id>
        <name>Second</name>
    </item>
</root>

如您所见,我基本上需要在每个标记上复制名称空间。当我尝试使用JAXB创建它时,我得到以下XML输出:

<root xmlns="http://namespace/root"
      xmlns:ns2="http://namespace/item">

    <ns2:item>
        <ns2:id>1</ns:id>
        <ns2:name>First</ns2:name>
    </ns2:item>

    <ns2:item>
        <ns2:id>2</ns:id>
        <ns2:name>Second</ns2:name>
    </ns2:item>
</root>

显然有意义的是它是这样生成的,它使用前缀所以这里不应该有任何问题,

但我发送此XML的消费者要求它采用该格式,我必须为文件中的每个项目复制命名空间。

有人知道怎么做吗?我想到了一个String模板,但由于它已经完成了JAXB,我想知道是否有更简单的方法来做到这一点。

提前谢谢大家!

0 个答案:

没有答案