当我尝试从部署到 WebSphere 7.0 的类中调用 WebService(HP-Service Manager,如果有帮助的话)时出现错误。 当我从 JUnit 代码调用它时,相同的代码功能...

WSDL 的片段是:

<definitions targetNamespace="http://schemas.hp.com/SM/7"
xmlns="http://schemas.xmlsoap.org/wsdl/"
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://schemas.xmlsoap.org/wsdl/  http://schemas.xmlsoap.org/wsdl/">

我认为 xmlns:xsi 总是被 XML 解析器知道,所以我不明白那个错误。为什么在 WebSphere 上会出现这样的错误,而在 JUnit 中使用 com.ibm.ws.webservices.thinclient 启动代码时不会出现这种错误?

足够的 StackTrace 片段是:

最佳答案

该错误可能不是源于 WSDL,而是源于从 WebService 发回的 XML。您可能想看一眼究竟返回了什么 XML,并检查 xsi 命名空间是否在文档中正确绑定(bind)。

除此之外,每个解析器实例(服务器与 JUnit)的配置很可能存在细微差别,这会导致一个解析器拒绝未绑定(bind)的命名空间,而另一个解析器只是忽略解析的 XML 中的这个“故障”。 (例如,请参阅 setNamespaces() 以了解 apache 解析器。)

关于java - SAXParseException : The prefix "xsi" for attribute "xsi:schemaLocation" is not bound,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16690404/

10-13 02:01