gpt4 book ai didi

java - 更改 jaxb 中对象的命名空间

转载 作者:行者123 更新时间:2023-12-01 09:57:59 24 4
gpt4 key购买 nike

我必须管理许多网络服务,并且必须将我的应用程序放在它们和客户端之间:客户端将调用我,我将调用服务器并管理响应以将它们发送给客户端。

请求和响应都有一个定义的“信封”:不同但几乎相同。

可以说:

<req xmlns="namespaceReq">
<req-data>..different info 1..</req-data>
<info>...Info object...</info>
</req>

<resp xmlns="namespaceResp">
<resp-data>..different info 2...<resp-data>
<info>...Info object...</info>
</resp>

所以我想在请求和响应之间共享公共(public)类 - 又名信息对象 - ;我已经为请求创建了一个 java 包(在其包名中包含请求的 namespace 以及 Req 和 Req-data 类),为响应创建了另一个包(在其包名中包含响应的 namespace ,并且另外,Resp 和 Resp-data 类)并做了另一个包来保存公共(public)部分(Info 类),这就是我的问题......

我应该如何管理命名空间,以便可以将公共(public) Info 对象共享给请求和响应?

如果我将请求的命名空间放在 package-info.java 中,它适用于请求,但不适用于响应,如果我放置响应,它不适用于请求...

最佳答案

通用对象包应该定义它自己的 XML 命名空间...我已经完成了您想要做的配置,但我从 XSD 文件生成了对象...示例:

XSD 共享:

<xs:schema
targetNamespace="http://xyz/commons"
xmlns:tns="http://xyz/commons"
elementFormDefault="qualified"
version="1.0"
xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:complexType name="InfoType">
<xs:sequence>
<xs:element name="Address" type="xs:string" maxOccurs="1" />
</xs:sequence>
</xs:complexType>
</xs:schema>

XSD 请求:

<xs:schema
targetNamespace="http://xyz/requests"
xmlns:tns="http://xyz/requests"
xmlns:commons="http://xyz/commons"
elementFormDefault="qualified"
version="1.0"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
>
<xs:import namespace="http://xyz/commons" schemaLocation="commons.xsd" />

<xs:element name="Request" type="tns:RequestType" />

<xs:complexType name="RequestType">
<xs:sequence>
<xs:element name="info" type="commons:InfoType" />
</xs:sequence>
</xs:complexType>
</xs:schema>

关于java - 更改 jaxb 中对象的命名空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37032426/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com