如何使用根元素解析XML

hia*_*mex 4 java jaxb xml-parsing

我需要注释一个类,用于解组XML,如下所示:

<element>data</element>
Run Code Online (Sandbox Code Playgroud)

而且我不知道该怎么做,因为必须对类进行注释,@XmlRootElement但我需要获取根元素值.我知道这不起作用,但这就是我所做的:

@XmlRootElement(name = "element")
public Class MyClass{

@XmlElement(name = "element")
protected String elementValue;
public String getElementValue(){...}
public void setElementValue(String el){...}
Run Code Online (Sandbox Code Playgroud)

有没有可能得到这个?

jta*_*orn 7

您正在寻找@XmlValue注释.

我的课

package forum13626828;

import javax.xml.bind.annotation.*;

@XmlRootElement(name = "element")
public class MyClass{

    protected String elementValue;

    @XmlValue
    public String getElementValue() {
        return elementValue;
    }

    public void setElementValue(String el) {
        this.elementValue = el;
    }

}
Run Code Online (Sandbox Code Playgroud)

演示

package forum13626828;

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

public class Demo {

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

        Unmarshaller unmarshaller = jc.createUnmarshaller();
        StringReader xml = new StringReader("<element>data</element>");
        MyClass myClass = (MyClass) unmarshaller.unmarshal(xml);

        Marshaller marshaller = jc.createMarshaller();
        marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
        marshaller.marshal(myClass, System.out);
    }

}
Run Code Online (Sandbox Code Playgroud)

产量

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<element>data</element>
Run Code Online (Sandbox Code Playgroud)