对于 xml:
<foo xmlns="http://ns.com"
xmlns:ext="http://ext.com"
attr="xxx"
ext:bar="yyy">
</foo>
如何创建 Foo 类?具体来说,我希望能够以某种方式分离“ext”属性,这样它就不直接在 Foo 中,而是在另一个类中,并且以类型安全的方式(所以不是 XmlAnyAttribute)。
我最希望的是:
class Foo {
Ext ext;
}
class Ext {
String bar;
}
最佳答案
如果引用的对象只有一个使用 @XmlValue
映射的字段/属性,则可以使用 @XmlAttribute
映射 POJO 字段/属性。
福
class Foo {
@XmlAttribute(namespace="http://www.ext.com")
Ext ext
}
分机
class Ext {
@XmlValue
String bar;
}
了解更多信息
<小时/>更新
注意:我是EclipseLink JAXB (MOXy) JAXB 2 (JSR-222) 的领导者和成员专家组。
What if i want to map several attributes?
对于此用例,您可以利用 MOXy 中的 @XmlPath
扩展:
福
使用@XmlPath(".")
表示您希望目标对象在 XML 文档中与源对象处于同一级别。
class Foo {
@XmlPath(".")
Ext ext
}
分机
class Ext {
@XmlAttribute
String foo;
@XmlAttribute
String bar;
}
了解更多信息
关于java - 以模块化方式添加命名空间属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9975615/