如何解析只有根元素的 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的主要内容,如果未能解决你的问题,请参考以下文章

解析没有根元素的 XML 流

Android XML解析错误:只允许一个根元素

从流输入中解析没有根元素的 XML 片段列表

XML 解析错误:找不到根元素位置

XML 解析错误:找不到根元素

XML 解析错误:找不到根元素