java - 解码 Web 服务响应时出错

标签 java xml web-services jaxb jax-ws

我正在使用 JAX-WS 调用 Web 服务。我想将内容转换为 Java 对象。

这是 Web 服务响应的内容部分。

<header xmlns="">
  <store>
    <store_id>1</store_id>
    <store_name>ACME</store_name>
  </store>
</header>

然后我创建了一个类,如下所示:

@XmlAccessorType(XmlAccessType.FIELD) 
@XmlType(name = "", propOrder = {
        "store_id",
        "store_name" }) 
@XmlRootElement(name = "store") 
static public class store { 
   @XmlElement(name = "store_id", required = true)
   protected String store_id;

   @XmlElement(name = "store_name", required = true)
   protected String store_name;
}

我的 JAXB 代码:

List result = service.getService1Soap12().getDivisions().getContent();
ElementNSImpl e =(ElementNSImpl)result.get(0);
JAXBContext context = JAXBContext.newInstance(store.class);
Unmarshaller um = context.createUnmarshaller();

JAXBElement element = (JAXBElement) um.unmarshal(e);
store customer = (store) element.getValue();

我收到以下错误:

Exception in thread "main" javax.xml.bind.UnmarshalException: unexpected element (uri:"", local:"store"). Expected elements are <{http://tempuri.org/}header>

我已经尝试了无数的方法来解决这个问题。任何帮助都会很棒!

最佳答案

尝试将 DOM 元素包装在 DOMSource 实例中并执行以下操作:

DOMSource domSource = new DOMSource(e);
JAXBElement<store> element =
    unmarshaller.unmarshal(domSource, store.class);

通过提供您想要解码的类,JAXB impl 不需要根据根元素确定解码类。

关于java - 解码 Web 服务响应时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14614295/

相关文章:

java - 使用代理 Controller 执行 rft 测试脚本?

java - 使用 MTOM 的 WS 下载操作

c# - 客户端 GET 请求没有返回任何内容?

java - 使用 OPC UA 浏览特定标识符

java - 动态配置 Apache Http 客户端

xml - 使用 F# linq to XML 解析 XML 文件

java - 替换 Spring PayloadValidatingInterceptor 中的 XML MessageFormatter

java - 在服务器端测试 Spring Web 服务端点?

java - 如何检查List是否按顺序包含多个元素

c# - 读取奇怪的 XML 文件