我尝试了互联网上所有的解决方案,但没有一个对我有效。ns2(ns2:Request)正在添加不同java包中的类。我已经添加了package.info,但它没有帮助。
POJO:
package com.models.response;
@XmlRootElement(name = "Response")
@XmlAccessorType(XmlAccessType.FIELD)
@Data
public class ResponseModel extends CommonModel {
private static final long serialVersionUID = -865642381181292886L;
@XmlElement(required = true)
private ContentModelResponse content;
}
package com.models.response;
@Data
@ToString(callSuper = true)
@XmlAccessorType(XmlAccessType.FIELD)
public class ContentModelResponse extends ContentModelRequest {
@XmlElement(name = "Response", required = true)
private ResponseModel response;
}
不同包中的类:
package com.models.request;
@Data
@XmlAccessorType(XmlAccessType.FIELD)
public class ContentModelRequest {
@XmlElement(name = "Request", required = true)
protected RequestModel request;
}
package.info
@javax.xml.bind.annotation.XmlSchema(
namespace = "http://uri.abc.com/ML",
elementFormDefault = javax.xml.bind.annotation.XmlNsForm.QUALIFIED,
xmlns = {
@javax.xml.bind.annotation.XmlNs(
namespaceURI = "http://uri.abc.com/ML",
prefix = "")
})
package com.models.request;
响应XML:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<BCResponse
xmlns:ns2="http://uri.abc.com/ML">
<publisher>
</publisher>
<content>
<ns2:Request>
<ns2:legalEntity>
<ns2:partyId>
<ns2:id></ns2:id>
</ns2:partyId>
</ns2:Request>
<Response>
<ResponseStatus>
<statusType>ERROR</statusType>
</ResponseStatus>
</Response>
</content>
</BCResponse>
1条答案
按热度按时间e0bqpujr1#
溶液
Schema优先设计
让我们从
BCResponse
的XML示例开始,为给定的元素创建XML Schema,然后JAXB可以使用其XJC编译器生成Java类。Here是一个名为Publisher的Maven项目,使用标准的文件布局。该项目包括:
BCResponse
模型的XML架构文件Publisher-BCResponse.xsdRequest
模型的XML架构文件Publisher-Request.xsdPublisher
数据。hisrc-higherjaxb-maven-plugin
的Maven POM文件download包含一个独立的Maven项目,可以使用以下命令执行:
JAXB类由该插件使用该项目的pom.xml生成
并且被生成以:
方法
Publisher-BCResponse.xsd模式不声明名称空间,并配置为使用前缀
"ns2"
* 导入 * Publisher-Request.xsd模式。注意:前缀是任意的,可以是
"abc"
Publisher-Request.xsd模式声明其命名空间,如下所示:
Publisher.xjb绑定文件配置JAXB以生成类,如下所示:
测试
JUnit测试类PublisherTest.java扫描样本文件,并调用方法
checkSample(File sample)
将每个文件提供给测试人员。对于此项目,创建JAXBContext
,并将samples路径中的每个文件 * 解组 * 为BCResponse
对象或Request
对象。成功后,每个对象都被 * 封送 * 用于日志记录和review。Java First Design
在这种方法中,JAXB类是由您创建的,下面是它们的外观:
package-info.java
请求.java
LegalEntity.java
PartyId.java
BCResponse.java
Content.java
响应.java
ResponseStatus.java