2011-07-18 49 views
2

我有兩個版本的XSD架構。儘管XML名稱空間不同(xml名稱空間用於版本控制),但XSD非常相似。我想解析使用相同對象模型的兩個版本。 JAXB用於生成對象模型。JAXB:兩個版本的XSD,一個對象模型

是否有一種簡單的方法可以將兩個略有不同的XML模型讀入同一個對象模型?

回答

2

標準JAXB無法做到這一點,儘管一些實現可能有專有的解決方法。

您可以嘗試的是將文檔讀入DOM模型(即org.w3c.dom.Document),以編程方式設置DOM的名稱空間URI以匹配JAXB類模型中的名稱空間URI,然後解組DOM到JAXB(使用Unmarshaller.unmarshall(document)這樣做的性能會吸,但是這可能無所謂你

的助手,看看this PDF描述的版本控制架構的最佳實踐(提示:。更改命名空間URI不最佳實踐...)

+0

尼斯鏈接。更快的過濾方法可以基於Stax或Sax,而不是DOM。 –

+0

@Ed:是的,是的。串起更多的努力,但可能是一個更好的解決方案。 – skaffman

+0

這可能是SAX最簡單的一種情況,因爲添加過濾器可以很方便地轉換名稱空間聲明。 – StaxMan