Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何仅使用根元素解析XML_Java_Xml Parsing_Jaxb - Fatal编程技术网

Java 如何仅使用根元素解析XML

Java 如何仅使用根元素解析XML,java,xml-parsing,jaxb,Java,Xml Parsing,Jaxb,我需要对一个类进行注释,以便对XML进行如下解组: <element>data</element> 有可能得到这个吗?您正在寻找@XmlValue注释 MyClass package forum13626828; import javax.xml.bind.annotation.*; @XmlRootElement(name = "element") public class MyClass{ protected String elementValue;

我需要对一个类进行注释,以便对XML进行如下解组:

<element>data</element>

有可能得到这个吗?

您正在寻找
@XmlValue
注释

MyClass

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

}
演示

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

}
用于UM13626828的包;
导入java.io.StringReader;
导入javax.xml.bind.*;
公开课演示{
公共静态void main(字符串[]args)引发异常{
JAXBContext jc=JAXBContext.newInstance(MyClass.class);
Unmarshaller Unmarshaller=jc.createUnmarshaller();
StringReader xml=新的StringReader(“数据”);
MyClass MyClass=(MyClass)unmarshaller.unmarshal(xml);
Marshaller=jc.createMarshaller();
setProperty(marshaller.JAXB_格式化的_输出,true);
marshaller.marshall(myClass,System.out);
}
}
输出


数据

我将其更改为:
@XmlRootElement(name=“element”)公共类MyClass{@XmlValue受保护的String elementValue;公共字符串getElementValue(){…}公共void setElementValue(String el){…}
但仍然没有work@hiamex默认情况下,您需要在get方法上添加注释。我已更新了答案以显示此内容。我认为它可以在getter或字段中。无论如何,它仍然不起作用,有什么想法吗?@BlaiseDoughan-这可能是您的答案,而不是我的答案。:)谢谢更新。好的,谢谢你们两位答案是正确的,但我在JAXBContext.newInstance参数方面遇到了附带问题。现在一切都很好,谢谢;-)
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);
    }

}