生成的XML - 命名空间前缀

时间:2012-05-03 13:14:31

标签: jaxb jaxb2-maven-plugin

目前我已经从大量模式文件(.xsd)创建了Java类。生成的类正在工作(通过jaxb2-maven-plugin生成)。但现在我尝试从对象结构中生成XML。第一件事是我不完全理解为什么我需要提供在创建JAXB上下文期间可用的所有命名空间?

String[] context = { "Namespace1", "Namespace2", ...};

JAXBContext jc = JAXBContext.newInstance(Joiner.on(":").join(context));

通过marshaller我可以生成一个XML文档,但我遇到的问题如下:

<StartTag xmlns="Basenamespace" xmlns:ns1="Namespace1" xmlns:ns2="Namespace2" ...>
   <...>
     <ns1:T1>...</ns1:T1>
     <ns2:TX>...</ns2:TX>
     ...
</StartTag>

我想生成这样的东西:

<StartTag xmlns="Basenamespace">
   <...>
     <T1 xmlns="Namespace1">
     ...
     </T1>

     <TX xmlns="Namespace2">
      ...
     </TX>
     ...
</StartTag>

所以问题是:这是否可以通过JAXB中的属性实现? 此外,是否可以影响创建xmlns元素的标签?

1 个答案:

答案 0 :(得分:0)

看起来我对这个问题没有好运。我发现了以下内容:

jaxb namespaces in each element instead of root element during marshalling