Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用JAXB解析webservice中的xml时的一些问题_Java_Xml_Jaxb - Fatal编程技术网

Java 使用JAXB解析webservice中的xml时的一些问题

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

我在解析从位于的服务获得的xml响应时遇到问题

我的main代码就是其中之一,它与构建xml的带注释的bean结合在一起

我想“调试”在
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和名称空间的更多信息,您可以参考:谢谢,这对我来说绝对不是小事!现在我只需要弄清楚如何组织包级别的注释来清理类的代码!