Java 使用JAXB解析webservice中的xml时的一些问题
我在解析从位于的服务获得的xml响应时遇到问题 我的main代码就是其中之一,它与构建xml的带注释的bean结合在一起 我想“调试”在Java 使用JAXB解析webservice中的xml时的一些问题,java,xml,jaxb,Java,Xml,Jaxb,我在解析从位于的服务获得的xml响应时遇到问题 我的main代码就是其中之一,它与构建xml的带注释的bean结合在一起 我想“调试”在JAXBContext中发生的事情,这样我就可以看到我在带注释的bean中弄乱了什么。我发现唯一可能的是注册一个EventHandler,如下所示: unmarshaller.setEventHandler(new javax.xml.bind.helpers.DefaultValidationEventHandler()); 这会打印如下错误: uri
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
urihttp://lookup.dbpedia.org/api/search.asmx/KeywordSearch?QueryString=galway&MaxHits=5
DefaultValidationEventHandler:[错误]:意外元素(uri:)http://lookup.dbpedia.org/“,本地:“结果”)。预期的要素是
地点:3号线
似乎出现了意外的元素结果,但我无法修复它。
有人能指导我更深入地理解JAXB错误吗?我真的搞不懂这些错误的真正含义(因为我已经设置了
namespace=”http://wiki.dbpedia.org/Lookup“
在ArrayOfResult
类中) 您在ArrayOfResult上指定了名称空间信息,但在Result上没有指定名称空间信息:
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 {
}
我就是这么想的。语法{}结果令人困惑,但是如果您知道{}应该包含名称空间(当然,从技术上讲,它现在也应该包含名称空间),那么错误就会变得更清楚。我希望。如果这回答了你的问题,请考虑把它标记为被接受的答案。有关JAXB和名称空间的更多信息,您可以参考:谢谢,这对我来说绝对不是小事!现在我只需要弄清楚如何组织包级别的注释来清理类的代码!