我有一些这样的XML:XML:基地JAXB
<root xml:base="http://www.example.com/foo">
<childElement someAttribute="bar/blort.html"/>
<childElement someAttribute="bar/baz/foo.html"/>
</root>
我的XML架构someAttribute定义为类型为xs:任何URI
我想使用JAXB解组XML转换对象模型有点像这样:
@XmlRootElement(name="root")
class Root {
@XmlElement(name="childElement")
private List<Child> _children;
}
class Child {
@XmlAttribute(name="someAttribute")
private URI _someAttribute;
}
我想someAttribute的值,以根据XML的基础上,即,可以解决当我解组上面给出的XML,我希望儿童的属性加以解决吨o值为http://www.example.com/foo/bar/blort.html的java.net.URI实例等。
我希望自定义的XmlAdapter可以让我获得正确的结果,但是XmlAdapter无法访问周围的上下文,特别是xml:base在这个时候的值(注意这不是就像xml:base的最近封闭值一样简单,因为xml:base可以出现在树中的任何位置,而相对的xml:bases必须根据它们的祖先解析)。
我使用EclipseLink的JAXB的MOXY实现,如果它很重要。
谢谢!它需要稍微调整以处理由祖先元素上的多个xml:base属性确定的基本URL的边缘情况,但这可以使用reader.isEndElement并维护在树中的每个深度处找到的xml:base列表来完成 – 2012-03-28 15:39:10