2013-02-19 75 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