2013-02-19 77 views
2

我的XML結構。JAXB XML - > Java對象屬性

<?xml version="1.0" encoding="UTF-8" standalone="yes"?> 
<A> 
    <B ID="www"> 
     <C>abcde</C> 
    </B> 
</A> 

我用Unmarshaller

System.out.println(c.toString()); => abcde 

我想要屬性信息。

System.out.println(????????);  => ID or count 

請幫助我。

+0

什麼對象模型,你映射的XML? – 2013-02-19 12:03:53

回答

2

你可以做以下

Java模型

JAXB(JSR-222)實現需要你有一個對象模型,XML文檔轉換爲。

一個

import javax.xml.bind.annotation.*; 

@XmlRootElement(name="A") 
public class A { 

    private B b; 

    @XmlElement(name="B") 
    public B getB() { 
     return b; 
    } 

    public void setB(B b) { 
     this.b = b; 
    } 

} 

import javax.xml.bind.annotation.*; 

public class B { 

    private String id; 
    private String c; 

    @XmlAttribute(name = "ID") 
    public String getId() { 
     return id; 
    } 

    public void setId(String id) { 
     this.id = id; 
    } 

    @XmlElement(name = "C") 
    public String getC() { 
     return c; 
    } 

    public void setC(String c) { 
     this.c = c; 
    } 

} 

演示代碼

一旦你有你將XML轉換爲Java對象,您可以導航對象以獲取所需的數據。

演示

import java.io.File; 
import javax.xml.bind.*; 

public class Demo { 

    public static void main(String[] args) throws Exception { 
     JAXBContext jc = JAXBContext.newInstance(A.class); 

     Unmarshaller unmarshaller = jc.createUnmarshaller(); 
     File xml = new File("src/forum14951650/input.xml"); 
     A a = (A) unmarshaller.unmarshal(xml); 

     System.out.println(a.getB().getId()); 
     System.out.println(a.getB().getC()); 
    } 

} 

輸出

www 
abcde