繁体   English   中英

Java解组器异常

[英]Java unmarshaller exception

我正在使用JAXB解析器将XML文件转换为Java对象,但出现了异常:

线程“主”中的异常javax.xml.bind.UnmarshalException:意外元素(uri:“”,local:“ charges”)。 期望的元素是<{} service>,<{} servicemethod>,<{} userclass>

我已经在类中包含了注释@XmlRootElement,但是它没有帮助。

XML文件

<charges>
<userclass>
    <classname>adhoc</classname>
    <service>
        <serviceclass>local</serviceclass>
        <servicemethod charge="0.05">call</servicemethod>
        <servicemethod charge="0.02">text</servicemethod>
    </service>
</userclass>
<userclass>
    <classname>prepaid</classname>
    <service>
        <serviceclass>longdistance</serviceclass>
        <servicemethod charge="0.05">call</servicemethod>
        <servicemethod charge="0.02">text</servicemethod>
    </service>
    <service>
        <serviceclass>international</serviceclass>
        <servicemethod charge="0.25">call</servicemethod>
        <servicemethod charge="0.10">text</servicemethod>
    </service>
    <service>
        <serviceclass>local</serviceclass>
        <servicemethod charge="0.01">call</servicemethod>
        <servicemethod charge="0.01">text</servicemethod>
    </service>
</userclass>
<userclass>
    <classname>monthly</classname>
    <service>
        <serviceclass>longdistance</serviceclass>
        <servicemethod charge="0.03">call</servicemethod>
        <servicemethod>text</servicemethod>
    </service>
    <service>
        <serviceclass>international</serviceclass>
        <servicemethod charge="0.05">call</servicemethod>
        <servicemethod>text</servicemethod>
    </service>
    <service>
        <serviceclass>local</serviceclass>
        <servicemethod>call</servicemethod>
        <servicemethod>text</servicemethod>
    </service>
</userclass>
</charges>

收费课

import java.util.ArrayList;
import java.util.List;

import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlType;


@XmlAccessorType (XmlAccessType.FIELD)
@XmlType(name = "", propOrder = {"userclass"}, factoryClass=ObjectFactory.class,    factoryMethod="createChargers")
@XmlRootElement(name="charges", namespace="")
public class Charges {
    List<Userclass> userclass;

    public List<Userclass> getUserClasses() {
        if (userclass == null) {
            userclass = new ArrayList<Userclass>();
        }
        return this.userclass;
    }
}

如果有人可以告诉我我要去哪里错了,将不胜感激!

您可能已经忘记了将Charges包含在用于引导JAXBContext的类中。 尝试编组Charges实例以查看会发生什么。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM