如何解析只有根元素的 XML
Posted
技术标签:
【中文标题】如何解析只有根元素的 XML【英文标题】:How to parse an XML with only root element 【发布时间】:2012-11-17 14:07:11 【问题描述】:我需要注释一个类来解组这样的 XML:
<element>data</element>
我不知道该怎么做,因为该类必须用@XmlRootElement
进行注释,但我需要获取根元素值。我知道这不起作用,但这是我所做的:
@XmlRootElement(name = "element")
public Class MyClass
@XmlElement(name = "element")
protected String elementValue;
public String getElementValue()...
public void setElementValue(String el)...
有没有可能得到这个?
【问题讨论】:
【参考方案1】:您正在寻找@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;
演示
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);
输出
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<element>data</element>
【讨论】:
我改成了:@XmlRootElement(name = "element") public Class MyClass @XmlValue protected String elementValue; public String getElementValue()... public void setElementValue(String el)...
还是不行
@hiamex 默认需要在get方法上添加注解。我已经更新了答案以显示这一点。
我认为它可以在 getter 中或在字段中。无论如何,它仍然不起作用,有什么想法吗?
@BlaiseDoughan - 这应该是你现在的答案,而不是我的。 :) 感谢您的更新。
好的,谢谢两位,答案是正确的,但我在使用 JAXBContext.newInstance 参数时遇到了附带问题。现在一切正常,谢谢;-)以上是关于如何解析只有根元素的 XML的主要内容,如果未能解决你的问题,请参考以下文章