问题标签 [oxm]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
5151 浏览

java - 什么是最好的 Java OXM 库?

尽管我已经做了一段时间的开发人员,但我很幸运能够避免使用 XML 做很多工作。所以现在我有一个项目,我必须与一些 Web 服务进行交互,并且想使用某种对象到 XML 映射解决方案。

我唯一知道的是JAXB。那是最好的搭配吗?还有其他建议吗?

一个问题 - 我被困在使用 Java 1.4 中,所以我无法对注释做任何事情。

0 投票
2 回答
2544 浏览

java - 在 Castor 中将集合映射到 XML

我正在尝试使用 Castor 将 POJO 映射到 XML。

假设我有一个包含项目集合的订单......有没有办法实现如下所示的 xml:

我可以制作类似但没有<items>节点的东西。在其他情况下这不是问题,但我的 XML 必须遵守严格的 XSD 模式,所以我需要这样做。

谢谢!


我认为一种“解决方法”将涉及创建一个仅包含项目列表的新 java 对象(即节点)......有人能想到更好的方法吗?从现在开始有一个 100 代表的赏金开放!

0 投票
5 回答
663 浏览

.net - .NET 中的 XML 绑定解决方案

.net 中是否有任何适当的 xml 绑定(映射)解决方案(OXM)?我需要的是从任意 xml 生成模型类。至于现在我在 Java 中找不到像 JaXB 1/2、JiBX、Castor XML、XMLBeans 这样的东西。

0 投票
2 回答
3485 浏览

java - 泛型集合和 XStream

有没有办法将(使用xstream)映射到List<Person>例如?<friends>List<Things><stuff>

谢谢!

0 投票
1 回答
133 浏览

java - Spring oxm 在 catch 语句附近出现类型转换错误

我在 catch 语句附近遇到错误 Error : required java.lang.Throwabe found org.springframework.oxm.XmlMappingException

0 投票
1 回答
883 浏览

web-services - (Java) 如何在分布式组件(例如 Web 服务或套接字)之间传递经过模式验证的 XML 文档作为参数?

这是对该场景的描述,我也将不胜感激对所用方法的任何评论

我的应用程序的核心是一组由 P2P 数据库支持的 Web 服务。一个服务接受一个简单的基于 XML 的记录(我已经为它设计了一个通用模式)。服务处理这些数据(主要是根据某些标准创建密钥)并将原始数据与创建的密钥一起传递给侦听 P2P 节点之一中的侦听 SocketServer。这个键、数据对被路由到适当的节点,该节点将数据(与作为 ID 的键关联)存储在 XML 数据库中。

第二个服务接受基于相同模式构造的查询文档,但具有可选值,用于从先前存储的搜索和匹配。所以第二个服务会将这个查询(使用正确的键)传递给 P2P 部分,取回结果并将它们传递回服务客户端。

例如,如果提交给第一个服务的原始记录是 <attr1>value1</attr1><attr2>value2</attr2>(属性列表以及模式要求的一些其他元数据),那么第二个服务应该检索该记录,如果收到的查询是 <attr2>value2</attr2>

(我以后可以考虑使用更复杂的 XPath 或 XQuery 查询,因为底层 XML 数据库允许,而不是此处的值完全匹配,但这在现阶段并不重要。我还在处理第三个服务,但这取决于获取前两个形状正确)

所以我的问题是:

1) 我应该使用什么数据类型作为 Web 服务的参数?如何将我的模式用于此用途?我为此考虑了各种 XML 绑定框架(尤其是 JAXB 和 SDO),但不知道如何进行。

2) 如何增强这两个服务(将它们称为存储和搜索)以使用基于原始通用模式的动态创建的模板?该服务仍将接受主要模式类型的文档,但具有基于模板的内部属性列表,例如 template1 只需要其值是整数,而 template2 需要 (float) 和 (string)。当前基于 JSP 的原型手动创建此模板,但作为手动组装的 XML 文档(<>标签分散在文本中)并且没有类型检查,所以我认为我可以做得更好!

3) 是否可以生成一个快速的 Web 应用程序原型以简单地访问该系统(再次通过使用模式(&模板)编辑适当的 XML 消息结构?我正在寻找的是让(人类)用户选择一个模板,然后只需“填空”并提交,无需任何花哨的外观和感觉。

4) 我能否或如何使用这种 XML 消息类型跨套接字进行通信?

5) 我是否将服务部署为无状态 EJB 是否重要?我需要它们成为 EJB 还是 servlet 就足够了?

我目前有一个基本实现(来自以前的开发人员),用于我当前需求的一个子集(我正在改进服务并添加新的派生服务),但是没有架构或验证,并且数据一直作为基本的传递字符串,从而提供弱类型和难以更新手动解析。我想将其更新为更强的绑定类型的原因是在数据模式中引入更改,这些更改将很容易在整个系统中传递。基本上我希望系统尽可能少地与使用的数据格式/模式耦合;当前的原型与数据过于耦合,我发现在不破坏系统的情况下更改数据非常困难。

我最初的调查使我考虑了 JAXB,但它仅支持静态类型(无法在运行时动态创建模式/类型,我希望保留以供以后使用)。所以我遇到了同时具有动态和静态类型的 SDO。问题只是没有足够的社区和/或使用这种方法的例子,所以它似乎有风险(Apache Tuscany 和 Eclipselink 实现的例子非常稀缺,我找不到 5 年以上的完整例子(比如这个http://www.ibm.com/developerworks/java/library/j-sdo/)并且还解决了 SDO 的 XML 用例(大多数似乎集中在 SDO 的关系使用上)。

这是我第一次(在这里和其他地方)寻求编程帮助,所以请多多包涵。我在网上搜索了很多,但我找不到任何有用的东西,但这里和那里没有加起来的部分。

任何评论或提示都非常感谢。

trfndr

编辑

我忘了一件事:搜索服务如何取回结果?由于它正在打开客户端套接字连接,因此无法同步返回任何结果。当前的实现通过让服务客户端在随机端口上打开侦听套接字并将此联系信息放入查询文档中来解决此问题。在搜索 Web 服务将查询发送到 p2p 部分后,它就完成了。p2p 将结果作为 WS 调用发送到另一个服务,该服务将它们发送回服务客户端套接字。我不太喜欢这种方法,有没有更优雅的解决方案?

0 投票
1 回答
2211 浏览

java - Jibx - 如何解组/编组带有值和属性的标签?

对不起,伙计们,我不是故意偷懒的。好的,这是问题:我有上面的 xml 块的 xml 结构,其中一些标签在标签表示法中同时具有值​​和属性(MyTag 的值为 12 并且具有属性名称)。使用 Jibx 如何为这种情况创建绑定模式。显然对于只有值的xml标签或没有标签值的属性是正常的,但是当你同时拥有它们时我不知道该怎么做。谢谢。

0 投票
2 回答
12136 浏览

jaxb - JAXB - 创建模块以供重用

JAXB 是否支持模块化代码生成?

我的大部分背景是使用 JibX 进行 XML 编组,但由于遗留原因,我们公司正在使用 JAXB。

JIBX 可用的一项功能是模块化代码生成。假设我有一个主模式,但该模式有几个不同的信封。使用 JibX,我可以从 JibX 的核心模式中创建一个 jar 文件,然后在单独的项目中,我可以 JibX 我的信封模式并简单地指向共享 jar,而不必为每个信封复制核心模式的代码生成.

我还没有看到 JAXB 处理这个问题的方法 - 有没有人成功地做这样的事情?

提前致谢, 罗伊

0 投票
2 回答
23341 浏览

java - 将 Java 对象转换为 XML

我正在尝试将 Java 库中的 Java 对象转换为 XML 文件。但是,我遇到了这个问题:

然后我得到了这个例外:

如果我改变:JAXBContext jc = JAXBContext.newInstance("libraryA.a");

到:

然后我有另一个例外:

0 投票
2 回答
789 浏览

java - 使用 JAXB 注释对属性进行分组

我有一个Product具有以下属性的类:namedateCreated、和createdByUser,并且我正在使用 JAXB 编组。我想要这样的输出:dateModifiedmodifiedByUser

但理想情况下,我希望避免AuditInfo围绕这些属性创建一个单独的包装类。

有没有办法使用 JAXB 注释来做到这一点?我看了看,@XmlElementWrapper但那只是为了收藏。