Jaxb 生成的XML名称空间前缀
目前,我已经从大量的模式文件(.xsd)中创建了Java类。生成的类正在工作(通过jaxb2 maven插件生成)。但现在我尝试从对象结构生成XML。第一件事是,我不完全理解为什么我需要在创建JAXB上下文期间提供所有可用的名称空间Jaxb 生成的XML名称空间前缀,jaxb,jaxb2-maven-plugin,Jaxb,Jaxb2 Maven Plugin,目前,我已经从大量的模式文件(.xsd)中创建了Java类。生成的类正在工作(通过jaxb2 maven插件生成)。但现在我尝试从对象结构生成XML。第一件事是,我不完全理解为什么我需要在创建JAXB上下文期间提供所有可用的名称空间 String[] context = { "Namespace1", "Namespace2", ...}; JAXBContext jc = JAXBContext.newInstance(Joiner.on(":").join(context)); 通过封送
String[] context = { "Namespace1", "Namespace2", ...};
JAXBContext jc = JAXBContext.newInstance(Joiner.on(":").join(context));
通过封送拆收器,我可以生成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
元素将在哪个标记处创建?看起来我在这个问题上运气不好。我发现了以下几点:
<StartTag xmlns="Basenamespace" xmlns:ns1="Namespace1" xmlns:ns2="Namespace2" ...>
<...>
<ns1:T1>...</ns1:T1>
<ns2:TX>...</ns2:TX>
...
</StartTag>