【问题标题】:How to parse an XML with only root element如何解析只有根元素的 XML
【发布时间】: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){...}

有没有可能得到这个?

【问题讨论】:

    标签: java xml-parsing jaxb


    【解决方案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 参数时遇到了附带问题。现在一切正常,谢谢;-)
    猜你喜欢
    • 1970-01-01
    • 2018-02-07
    • 2011-10-02
    • 1970-01-01
    • 1970-01-01
    • 2019-10-15
    • 1970-01-01
    • 2022-11-24
    • 2013-07-10
    相关资源
    最近更新 更多