gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 11:57:04 25 4
gpt4 key购买 nike

我已经使用 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/

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