Java 如何仅使用根元素解析XML
我需要对一个类进行注释,以便对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;
<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);
}
}