我在解析从http://wiki.dbpedia.org/Lookup
的服务获得的xml响应时遇到问题我的主要代码是up here,与带有注释的bean一起构建xml。
我想'调试'JAXBContext
中发生的事情,这样我就可以看到我在注释的bean中搞砸了什么。我发现它唯一可能是注册EventHandler
这样:
unmarshaller.setEventHandler(new javax.xml.bind.helpers.DefaultValidationEventHandler());
打印如下错误:
uri http://lookup.dbpedia.org/api/search.asmx/KeywordSearch?QueryString=galway&MaxHits=5
DefaultValidationEventHandler: [ERROR]: unexpected element (uri:"http://lookup.dbpedia.org/", local:"Result"). Expected elements are <{}Result>
Location: line 3
似乎有一个意外的元素结果,但我无法设法解决它。
有人可以指导我更深入地理解JAXB错误吗?我真的无法弄清楚错误的真正含义(因为我已经在namespace = "http://wiki.dbpedia.org/Lookup"
类中设置了ArrayOfResult
)。
答案 0 :(得分:2)
您在ArrayOfResult上指定了名称空间信息,但在结果:
上没有package it.cybion.dbpedia.textsearch.rest.response;
import java.net.URI;
import java.util.List;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlElementWrapper;
import javax.xml.bind.annotation.XmlRootElement;
@XmlRootElement(name = "Result", namespace="http://lookup.dbpedia.org/")
@XmlAccessorType(XmlAccessType.FIELD)
public class Result {
}