JAXB XML - > Java对象属性

时间:2013-02-19 07:03:21

标签: jaxb

我的XML结构。

<?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
请帮助我。

1 个答案:

答案 0 :(得分:2)

您可以执行以下操作

JAVA模型

JAXB(JSR-222)实现要求您具有将XML文档转换为的对象模型。

A

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;
    }

}

DEMO CODE

将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