java - 如何在 xsd 文件中指定架构位置?

标签 java xml web-services xsd

我有一个 xsd 文件 Foo.xsd。我尝试了以下方法在 WSDL 文件中引用它,但它不起作用。

1) 将xsd文件放入本地文件系统并导入为

<xsd:import namespace="http://ws.test.com/" schemaLocation="file:///D:/wsdl/Foo.xsd"></xsd:import>

2) 将 xsd 文件放在 web 根文件夹中并导入为

<xsd:import namespace="http://ws.test.com/" schemaLocation="http://localhost:8080/Xfire/Foo.xsd"></xsd:import>

当我运行客户端时,响应对象的字段为空。但是,当我将类型定义嵌入 WSDL 本身时,这会起作用。

我们如何指定外部 xsds 的路径?

我正在使用 xFire 1.2.6 生成网络服务。客户端是使用 xFire WSGen ant 任务生成的。

最佳答案

WSDL 可从任何主机通过 HTTP 访问,因此客户端既不能访问文件 URL 也不能访问本地主机(这将是它自己的主机,而不是您的服务器)。最好的解决方案是 xsd 文件的文件路径:

相对路径:

<xsd:import namespace="http://ws.test.com/" schemaLocation="../Foo.xsd"/>

绝对路径:

<xsd:import namespace="http://ws.test.com/" schemaLocation="/myapp/Foo.xsd"/>

对于绝对路径,你需要知道你的 webapp 的上下文路径,所以我更喜欢相对路径。

关于java - 如何在 xsd 文件中指定架构位置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2872264/

相关文章:

java - 获取毫秒格式

database - 使用完全 REST Web 服务将数据写入数据库

java - 在 Jython 中编写 JUnit 测试

java - JAX-WS 网络服务 : Beans not injected : NullPointerException

java - .net中的这个java技术栈?

java - com.android.volley.parse 错误 org.json.jsonexception java.lang.string 类型的值无法在 Android Volley 中转换为 jsonArray

java - 我什么时候需要在 Java 中使用 AtomicBoolean?

php - 通过 PHP SimpleXMLElement 在根元素中获取命名空间名称

java - ListView 项目作为布局

xml - 是否可以使用 API key 检索 youtube 的 xml 提要?