我有一些這樣的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