需要jaxb到xml返回带有完整包名的xml

时间:2016-08-08 21:30:57

标签: java jaxb

我有类文件,比如“com.main.module.Test.java”。我需要将此文件转换为xml。如果我使用javax.xml.bind.JAXB,则返回的xml如下所示:

<Test>
 <sample>
 </sample>
</Test>

但我需要将xml显示为:

<com.main.module.Test>
 <com.main.module.sample>
 </com.main.module.sample>
</com.main.module.Test>

1 个答案:

答案 0 :(得分:1)

您可以为所需元素命名,只要它是valid name

示例:

@XmlRootElement(name = "com.main.module.Test")
class Foo {
    @XmlElement(name = "com.main.module.sample")
    String bar;

    public static void main(String[] args) throws Exception {
        Foo foo = new Foo();
        foo.bar = "Hello World";

        Marshaller marshaller = JAXBContext.newInstance(Foo.class).createMarshaller();
        marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
        marshaller.marshal(foo, System.out);
    }
}

输出

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<com.main.module.Test>
    <com.main.module.sample>Hello World</com.main.module.sample>
</com.main.module.Test>

如您所见,根元素名称与类名无关,子元素名称与字段名无关。