gpt4 book ai didi

java - 将 SOAP 消息转换为 Java 对象

转载 作者:行者123 更新时间:2023-12-01 08:51:22 24 4
gpt4 key购买 nike

我正在尝试找到一个合适的库来将 SOAP 消息转换为 Java 对象。

我接触过 XStream 和 JaxB。这些库在将 xml 转换为对象时需要类表示。

我们收到的 SOAP 消息是动态的,这意味着它们将根据调用的 SOAP 方法而变化。因此不可能为 SOAP 消息创建类结构。对于每次迭代,我们都会得到不同的 SOAP 响应。

是否有任何 java api 可用于将传入的 SOAP xml 转换为 Java 类,然后使用 JaxB 或 XStream 中的类将 xml 转换为 java 对象?

是否可以使用 JaxB 或 XStream 将 xml 转换为 Java 集合,如 Map 或 Map of Map 而无需类表示?

最佳答案

EclipseLink's Moxy提供动态 JAXB OXM 功能。

借助 EclipseLink Dynamic MOXy,您可以从各种元数据源引导 JAXBContext,并使用现有的 JAXB API 来编码和解码数据……而无需在类路径上编译 Java 类文件。这使您可以根据需要更改元数据,而无需更新和重新编译先前生成的 Java 源代码。

FileInputStream xmlInputStream = new FileInputStream("src/example/dynamic/customer.xml");
Unmarshaller unmarshaller = jaxbContext.createUnmarshaller();
DynamicEntity customer = (DynamicEntity) unmarshaller.unmarshal(xmlInputStream);

Dynamic MOXy 使用简单的 get(propertyName)/set(propertyName, propertyValue) API 来操作数据,而不是使用实际的 Java 类(例如 Customer.class 或 Address.class)。 EclipseLink 生成(在内存中)与每个 DynamicEntity 关联的 DynamicType。

System.out.println(customer.<String>get("name"));

建议阅读:

https://wiki.eclipse.org/EclipseLink/Examples/MOXy/Dynamic/XmlToDynamicEntity https://docs.oracle.com/middleware/1212/toplink/TLJAX/dynamic_jaxb.htm#TLJAX442

关于java - 将 SOAP 消息转换为 Java 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42382843/

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