java - 具有 XMLBeans 数据绑定(bind)的 Axis2 - 从具有任何类型的 XSD 架构生成的 Java 客户端出现问题

标签 java xsd axis2 xmlbeans

我已经使用 Axis2 框架和 XMLBeans 作为数据绑定(bind)方法生成了一个客户端。 XSD 架构如下:
<xsd:schema><br/> <xsd:element name="profile" type="anyType"/><br/> </xsd:schema>

作为 SOAP 请求的一部分生成的 java 对象包含允许获取和设置配置文件的 getter 和 setter 方法。这是方法签名: requestDocument.setProfile(XmlObject profile);

问题是,即使我必须传递几个节点作为配置文件而不是有效的 XML 文档,但 XMLObject 需要一个具有根节点的 XML 文档。

我需要通过:
<accounts></accounts><br/> <payees></payees>

实际上,我使用的服务需要这些节点,但没有将它们限制在模式中。因此,我无法添加另一个根节点,因为即使服务不会抛出任何异常,配置文件也将不可用。

XMLBeans 已经添加了底层 XML 树,我指的是请求文档中的配置文件节点。因此,我不能将它用作根节点。如果我添加一个根节点,将创建以下 XML
<profile> <profile></profile> </profile>

我希望文档的格式如下:
<profile><br/> <accounts></accounts> <payees></payees><br/> </profile>

我不想修改服务的架构。我想知道 Axis2/XMLBeans 是否有办法解决这个问题。

最佳答案

我找到了一个可能是解决方法的解决方案,而不是应该采用的干净方式。 而不是使用 XMLObject 设置配置文件,如下所示:
requestDocument.setProfile(XmlObject 配置文件);
我使用 org.w3c.dom.Node 对象来创建配置文件内容。见下文:
1. 创建要添加到配置文件的元素 org.w3c.dom.Element:
元素 accountsElt = profileDocument.createElement("accounts");
元素 payeesElt = profileDocument.createElement("payees");
2. 在要发送给服务的文档中创建一个空配置文件,注意该对象是自动生成的:
requestDocument.addNewProfile();
3. 获取空配置文件并将子节点添加到其根节点: requestDocument.getProfile().getDomNode().appendChild(accountsElt); requestDocument.getProfile().getDomNode().appendChild(payeesElt);

希望对你有帮助。

关于java - 具有 XMLBeans 数据绑定(bind)的 Axis2 - 从具有任何类型的 XSD 架构生成的 Java 客户端出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4041636/

相关文章:

java - entityManagerFactory 未命名时 "entityManagerFactory"

java - 如何在一个 java 应用程序中处理不同版本的 xsd 文件?

maven - jaxb2-maven-plugin XJB : The namespace of element 'bindings' must be from the schema namespace' 错误

Java SQL JDBC 错误 - 带有 Soap 消息

java - 通过SOAP操作生成SOAP服务

javascript - 在 java 中安全运行 javascript 代码

java - 我应该在哪里保存 JDBC 连接详细信息?

java - 在 Spring Boot Thymeleaf Controller 返回的 View 中显示字符串

javascript - 如何使用 jQuery 对带有命名空间的 XML 进行解析

生成的客户端 stub 中的 Java Axis2 IllegalStateException