使用JAXB从webservice解析xml的一些问题

时间:2011-01-31 18:45:15

标签: java xml jaxb

我在解析从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)。

1 个答案:

答案 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 {
}