2012-07-25 57 views
0

我想僅使用JaxB解組一個大XML的少數子組。 XML結構是這樣的:如何僅使用JAXB解組孩子元素?

<root> 
    <child1> 
    <child1.1> 
     <child1.1.1/> 
     <child2.1.1/> 
     <child2.1.1/> 
     <child3.1.1/> 
     <child3.1.1/> 
    </child1.1> 
    </child1> 
</root> 

在這裏我要解組到child1.1.1, child2.1.1 and child3.1.1。我不想創建根元素的java類,只想要元帥的孩子。
現在,我正在解組根元素並從中獲取子對象。

JAXBContext jc = JAXBContextFactory.createContext(new Class[] {RootType.class}, null); 
Unmarshaller unmarshaller = jc.createUnmarshaller(); 
File xml = new File("D:/Projects/test.xml"); 
RootType root = (RootType)unmarshaller.unmarshal(xml); 
Child1.1.1[] child1.1.1 = root.getChild1().getChild1.1[0].getChild1.1.1() 

另一個問題是處理多個孩子。
在解編個別子元素時,我該如何處理child2.1.1 and child3.1.1

回答

1

您可以使用DocumentBuilder自己解析它,而不是讓JAXB解析文件,然後提取您感興趣的節點,例如使用XPath。然後,您可以使用Unmarshaller.unmarshal(Node node)單獨解組每個節點。