2012-06-08 21 views
2

我得到的XML內容是這樣的:JAXB:是否可以處理未知元素

<data> 
    <randomtagname> 
     <name>....</name> 
     <description>.....</description> 
     <description>.....</description> 
    </randomtagname> 
    <anotherrandomtagname> 
     <name>....</name> 
     <description>.....</description> 
    </anotherrandomtagname> 
    <thirdridiculousrandomtagname> 
     <name>....</name> 
     <description>.....</description> 
     <description>.....</description> 
    </thirdridiculousrandomtagname> 
     . 
     . 
     . 
</data> 

是possibe創建一個註解的Java類,並使用JAXB這不同於/馬歇爾這個文件,而無需使用@XmlAnyElement? ?

+0

是您的源xml如此未定義,您可以提取XSD?如果你可以提取xsd,你可以建立類java,不需要擔心這個......如果沒有(不可能的XSD提取)爲什麼不應用DOM? –

+0

隨機標籤名稱可以!每當我得到並需要解析它們時都會有所不同。所以我不知道是否可以生成一個xsd。但id不想一直改變我的代碼的XML的內容已經改變,因爲radnom標籤的內部結構仍然是相同的 – semTex

+0

@spaeth:到DOM部分:我想避免手動DOM解析。但是,這次我似乎沒有運氣。 – semTex

回答

1

它看起來像對象列表給我。創建一個具有

List<Object> data
變量的java類。你不應該需要這個註釋。

基本上你希望你的xml接口具有足夠的通用性,可以接受可能有不同字段的不同對象列表。一旦這個接口接受了一個java對象列表,它就可以直到你的java代碼來確定它們是什麼,並將它們轉換爲正確的類類型。使用該部分的instanceOf。其中一些是用Java泛型描述的,你可以傳入任何對象,但你必須確定它是什麼。我認爲只要它以實際的班級形式發送,instanceof就可以工作。您不會發送對象列表,您可以發送像String,Integer或Myclass1,Myclass2等自定義類的列表。然後,一旦你讀了這個列表,使用instanceof來確定列表中每個對象的對象類型,它是String,Myclass1,Myclass2等的實例...並且適當地轉換。

更仔細地閱讀你的問題我可能會錯過你真正需要知道的東西。也許這個鏈接有一些有用的東西。 jaxb help

+1

但在這種情況下什麼是對象?我仍然不明白如何識別單個「對象」來投射到任何其他類,像myObject.getName()或myObject.getDescription()[0]。 – semTex

+0

這裏的對象是任何類型的java對象。你可以在列表中有不同的對象,通過使用instanceOf來轉換它們來確定它是什麼類型的對象。如果obj1.instanceOf(MyClass1.class)MyClass1 objcl1 =(MyClass1)obj1; – Logan

+0

當然,我知道。所以你說在這種情況下,我應該做我自己的dom解析?像spaeth提到的?在這種特殊情況下不要使用jaxb? – semTex

相關問題