问题标签 [moxy]

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 投票
1 回答
1255 浏览

xpath - EclipseLink MOXy @XmlPath 支持轴/父

以下任何 XPath 表达式是否可接受?使用 2.3.1 版本的 eclipselink

基本上,这是在 XML 文档 ( /root/tag) 中重复的类中,如果不清楚,我会详细说明。

我试图遍历树而不是向下。我的其他@XmlPath注释工作正常。

0 投票
1 回答
850 浏览

xml - 检查我的 JAXB 实现

我正在尝试使用 Eclipselink 的 MOXy。我将 jaxb.properties 文件放在与带注释的类相同的目录中,它包含以下条目:

javax.xml.bind.context.factory=org.eclipse.persistence.jaxb.JAXBContextFactory

无论如何我可以确定这个实现是在运行时使用的吗?例如,我可以通过检查来检查我的 StAX 实现是否为 Woodstox:

inputFactory.getClass().getName() 等于 com.ctc.wstx.stax.WstxInputFactory

我可以做任何类似的事情来检查我的 JAXB 实现吗?

谢谢。

0 投票
1 回答
541 浏览

scala - 如何使用 Scala 的 Moxy?

这是How to un/marshall underscored XML to/from camelcased Java using JAXB?的后续问题?

我正在尝试使用来自 Scala(sbt 0.10.0)的 Moxy(EclipseLink 的一部分),并且正在努力弄清楚如何导入和使用它。将其分为两部分:

1.导入Moxy

这一次我在mvnrepository.com上找不到任何合适的东西。通过阅读有关 Maven setup 的此页面,我希望以下内容可以工作:

但是 sbt 在抱怨module not found: org.eclipse.persistence#javax.eclipselink;2.1.0

2. 指定 Moxy 作为我的 JAXB 提供者

解决了上述问题(感谢 SRI!),下一个问题是我无法将 Moxy 指定为我的 JAXB 提供程序。根据 Blaise Doughan 的这篇文章中的说明,看起来我需要将一个jaxb.properties包含以下条目的文件放在与我的表示相同的包中:

但不幸的是,在运行 sbt 时似乎并没有发现这一点。有任何想法吗?

感激地收到任何帮助。祝大家圣诞快乐!

0 投票
1 回答
255 浏览

scala - 如何取消/编组 JAXB 中的属性元素?

看起来这应该是相当明显的,但我找不到任何关于如何简单地(取消)编组 XML 元素的任何内容,这些元素也具有使用 JAXB 的属性。

换句话说,我了解如何使用 JAXB 注释来处理:

而且我了解如何将 JAXB 用于:

但我不知道如何处理类似的事情:

感觉我应该能够做这样的事情(我正在使用 Scala 的 JAXB):

然后定义XLink为:

但显然这不起作用,因为id不应该是子元素——它只是父节点的值。

这是一个常见的用例:我错过了什么?为了完整起见,我使用的是 Scala 的 JAXB (MOXy)。

0 投票
1 回答
1754 浏览

jaxb - JAXB-Eclipselink:将抽象“getter”映射到 XML

我正在使用 JAXB 的 EclipseLink 实现(2.3)将 POJO 映射到 XML,并遇到以下用例的问题:

我在外部绑定文件中完全定义映射本身,我将 A 类设置为瞬态,如下所示:

对于 B 类:

现在,在编组时,我得到了异常:“在类 [bar.B] 上找到名为 [x] 的重复属性”,我认为它来自 A 中的抽象声明,被 B 继承。

将 B 的访问器类型设置为 FIELD,消除了这个错误,不幸的是,这不是一个选项,因为我在 B 中有一个额外的属性来编组,它不返回字段而是计算值,所以我被 PROPERTY 卡住了(以下工作:将 B 的访问器类型设置为 FIELD 并使用 @XmlPath 注释映射额外的属性 - 但我不想在我的代码中添加注释)。

被 B 类的访问器类型属性卡住了,我的下一个尝试是:

防止抽象属性被B继承,这让我:

使用此映射也会发生同样的情况:

在这两种情况下,属性“x”都会被忽略。

我现在真的花了很多时间在这上面 - 我无法想象它不可能让它工作?

我目前的解决方法:

将 foo.A 保留为瞬态,为 bar.B 指定访问器类型 FIELD(这让我没有问题地获得属性“x”)并使用代码中的注释映射 B 中的额外属性。但如前所述:我想在没有注释的情况下完全解决这个问题——有人知道吗?布莱斯?:)

问候,

--qu

0 投票
1 回答
393 浏览

xpath - EclipseLink MOXy @XmlPath 支持谓词不等式

之前发布了EclipseLink MOXy @XmlPath 对轴/父级的支持

我仍在使用@XmlPath 注释,在我看来,不支持谓词不等式?

对我来说也有效的是检查属性的存在

或者更好的是,它不存在

引入这些功能需要付出高昂的代价吗?我习惯于使用整个 XPath 特性数组。MOXy 为我提供了一些很棒的功能,我非常感谢,但在这方面它似乎有点不灵活。

0 投票
1 回答
359 浏览

properties - JAXB-Eclipselink:继承的属性

我有以下使用 Eclipselink MOXy 2.3 将 POJO 编组为 XML 的用例:

我需要编组 B 和 C 但不是 A。所以我将 A 设置为瞬态,这使得 B 继承其在编组 B 时将被编组的所有成员。我不能将 B 设置为瞬态,因为我需要自己编组它,但是当我编组 C 时,我也需要编组属性 B.getX()。

@Override除了C 中的 getX()之外,还有其他方法可以对其进行编组吗?目前它只是我需要这样做的一个属性,但想象一个有很多成员的大型 B 类,需要@Override在 C 中将它们与 C 编组在一起。

外部映射文件中是否有任何注释或可能性将超类中的属性标记为由其直接子类(或所有子类)继承?

到这里的 Eclipselink/JAXB 方式是什么?

问候,

0 投票
1 回答
3844 浏览

date - 如何使用 MOXy 绑定文件处理 java.util.Date

一般来说,我是 MOXy 和 JaxB 的新手,我遇到了 java.util.Date 转换的问题。

我正在使用映射文件将 XML 文件(我无法控制)解组到对象(我既不能手动注释现有类也不能更改它们)。

我的 XML 映射文件如下所示:

在我编组的类中,属性“date”和“theoricalTime”的类型是 java.util.Date。

我正在编组的 xml 中的值是具有这种格式的字符串:“dd/MM/yyyy HH:mm:ss”(“05/01/2012 16:36:24”)。我也有一些只有时间值“HH:mm:ss”(“14:17:33”)的字段。

这是我在解组文件时得到的堆栈跟踪:

我的问题是:是否可以使用 MOXy 的外部元数据在映射文件中指定类型转换?如何使用上面指定的格式处理日期时间和时间并将它们映射到日期字段?

(我暗暗希望 Blaise Doughan 正在阅读这篇文章。)

在此先感谢您的帮助 !

0 投票
1 回答
1001 浏览

java - Jaxb Moxy 与休眠?在 Jboss 6.1 上

是否可以将 Moxy 与 Hibernate 一起使用?

如果是这样,我该如何安装它,试图找到它的文档但一无所获。

0 投票
1 回答
707 浏览

jaxb - JaxB EclipseLink/MOXy :据推测将空日期编组为今天的日期,而不是不为其编写节点

我再次对带有外部元数据映射文件的 Eclipselink/MOXy 有疑问。

我有一个适用于类的参考 xml。此 xml 包含适用于类可以包含的某些但并非总是所有属性的数据。

我还为日期字段设置了自定义日期时间适配器。

我的问题是我正在解组的 xml 不包含 endDate 属性的任何数据,但是当我做这个简单的测试时:

  • 将引用 xml 解组到类
  • 将该类编组到一个新的 xml 文件
  • 比较两个xml文件

该属性 endDate (不应编组,因为它尚未设置)被编组为 09/01/2012 17:05:28 (它总是编组为设置为当前时间的新 Date() )。

这是一个示例 XML 元数据文件:

这是课程:

这是我的自定义 DateTimeAdapter :

这是我的参考 XML

这是我在重新编组对象时得到的 XML:

似乎 Jaxb 为空字段生成了一个新日期,我如何通过外部元数据映射文件告诉他不要为空值或空值生成节点?我尝试在元数据文件上设置 required=false,如果值为 null,我尝试使用我的自定义 DateTimeAdapter 进行测试,但似乎 Jaxb 创建了一个新的 Date 对象并将其传递给适配器的 marshal 方法。我想不出任何办法阻止他这样做。

至于我以前的问题,我无法控制传入的 XML 或模型类。

请注意:这个数据是我写的一个样本,它可能不准确,因为我不能暴露真实的数据或名字,可能有一些打字错误。

谢谢你的帮助。