在编组期间,每个元素中的jaxb名称空间而不是根元素

时间:2010-03-05 08:56:56

标签: namespaces jaxb marshalling root jaxb2

默认情况下,jaxb 2在编组期间列出根元素中的所有(所有可能需要的)名称空间:

  

<rootElement xmlns="default_ns" xmlns:ns1="ns1" xmlns:ns2="ns2"> <ns1:element/> </rootElement>

有没有办法在每个元素中描述名称空间而不是根元素?:

  

<rootElement xmlns="default_ns"> <element xmlns="ns1"/> </rootElement>

它还解决了“不必要的命名空间”问题,这在我的案例中也很重要。 任何建议表示赞赏。

2 个答案:

答案 0 :(得分:0)

答案是否定的,JAXB不支持这种低级别的定制。考虑使用XSLT对已编组的XML进行后处理。

答案 1 :(得分:0)

另外,我倾向于同意他在另一个帖子中提供的回复中的@Anton。 我真的不应该重要。如果你必须强迫某种方式,你应该总是更喜欢顶级上下文,特别是如果你有可能重复的元素。在兄弟元素中重复命名空间声明是浪费空间,也不是接收端解析器的次优。