2

与较早的帖子类似,我正在尝试使用 JAX-WS 访问 Web 服务:

Dispatch<Source> sourceDispatch = null;
sourceDispatch = service.createDispatch(portQName, Source.class, Service.Mode.PAYLOAD);
Source result = sourceDispatch.invoke(new StreamSource(new StringReader(req)));
System.out.println(sourceToXML(result));

在哪里:

private static String sourceToXML(Source result) {
    Node rootNode= null;
    try {
        TransformerFactory factory = TransformerFactory.newInstance();
        Transformer transformer = factory.newTransformer();
        DOMResult domResult = new DOMResult();
        transformer.transform(result, domResult );
        rootNode = (Node) domResult.getNode();
  } catch (TransformerException e) {
        e.getMessage();
  }

    return rootNode.getFirstChild().getNodeValue();
}

但我收到错误“当前事件不是 START_ELEMENT null 而是 2”(我认为在变压器上)

我究竟做错了什么 :(

4

2 回答 2

0

大概来自解析器。我会说堆栈跟踪会有所帮助,但 Xerces/Xalan 有把它们搞砸的倾向。

采取的明显步骤:

  • 尝试将结果视为字符串。
  • 尝试使用解析器进行解析,暂时忽略转换器。
  • 尝试找出究竟是什么错误。
于 2009-04-30T12:31:29.893 回答
0

你应该修改你的陈述

e.getMessage()

实际打印错误消息:-)这应该会有所帮助。

System.err.println(e.getMessage());

或者最好

e.printStackTrace();
于 2009-04-30T12:37:37.990 回答