问题标签 [xmladapter]

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 投票
0 回答
77 浏览

java - 是否可以在使用 MOXy 编组以规范化 json 表示时重命名 @XmlPath 注释元素?

我不确定这是否可能,因为它与@XmlPath 本身的语义相矛盾,但如果是,请帮我解决这个问题。

我通过从我的 API 实现中调用一些外部 API 来获取这个 json { "title": "Forrest Gump", "writingCredits": { "novel": "Winston Groom", "screenplay": "Eric Roth" }, "directedBy": "Robert Zemeckis", "casts": ["Tom Hanks", "Rebecca Williams", "Sally Field"], "releaseDate": "1994-06-07T00:00:00.000Z", "producedBy": { "producers": ["Wendy Finerman", "Steve Starkey"], "co-producers": ["Charles Newrith"] } }

并将其映射到以下 POJO,该 POJO 将作为资源从我自己的 API 返回

在这里,我可以使用 MOXy 将必要的信息映射到我的 POJO,但在编组时遇到问题。虽然编组它保留了接收到的 json 的原始嵌套结构,但我的 POJO 结构没有嵌套,我的意思是它没有引用任何其他 POJO。当我将我的 POJO 编组为 json 时,我能得到这样的东西吗:

但相反,它显示如下:

那么,有什么办法可以解决这个问题吗?

还有一件事,对于类别属性,如果接收到的 json 中存在特定的 json 条目,我想确定它的值,例如,如果接收到的 json 包含类似的 json 条目

那么类别应设置为“动画”。我需要为它再写一个 XmlAdapter 吗?

谢谢..!

0 投票
0 回答
331 浏览

java - 使用 JAXB,我如何解组为具有多个 XmlJavaTypeAdapter 引用的 java 对象?

我正在尝试使用 JAXB 将带有两个 @XmlJavaTypeAdapter 注释(订阅者、标签)的数据(多边形)解组到 XML 文件中。每个对象都有它自己的 XML 文件,并且这些对象是相关的:

  • 每个订阅者可以持有多个多边形
  • 每个多边形可以拥有多个订阅者
  • 每个多边形可以包含多个标签

我正在尝试将 Polygon XML 文件解组回其类对象,其订阅者和标签都完好无损,但无法弄清楚如何去做。

== 订阅者.java ==

==多边形.java ==

== 标签.java ==

== 订阅者XmlAdapter.java ==

== TagXmlAdapter.java ==

== 订阅者集合.java ==

== TagCollection.java ==

为了执行解组,使用了三个 xml 文件 - 用于订阅者、多边形和标签 - 包含它们各自的数据:

JAXBContext jaxbContext = JAXBContext.newInstance(SubscriberCollection.class, PolygonTagCollection.class, Polygon.class);

这将使用正确的订阅者解组 Polygon,但不使用正确的标签。

我只能将一个 XmlAdapter 设置为解组器,因此它只能填充正在解组的多边形内的订阅者或标签。

有没有办法组合这些适配器?或者有没有更好的方法来做事。

谢谢!

0 投票
1 回答
240 浏览

java - 覆盖第 3 方库类的 XmlAdapter

我正在使用 jaxbMarshaller 为第三方库类生成 xml。由于将 Calendar 对象转换为字符串的库 XmlAdapter 未使用 TimeZone 字段,因此编组器为 pojo 类的每个 Calendar 字段生成错误的 xml。

第 3 方库 XmlAdapter 使用以下类进行日历到字符串的转换:

所以我想为 Calendar 字段覆盖 XmlAdapter 的行为并尝试下面的示例,但似乎它不起作用:

我的自定义 XmlAdapter 正在使用以下类进行转换:

然后我完成了注册表,例如:

谁能帮我知道这是否可行,如果是,我哪里出错了?

0 投票
1 回答
175 浏览

java - JAXB 和一个 XmlAdapter 用于映射到哈希映射中的基本类型

我正在开发一些 JavaSE GUI 应用程序,它必须从 XML 文件存储和加载它的数据(源代码在这里可用:https ://github.com/SP8EBC/MKS_JG )

在数据结构的某个地方,我有一个 HashMap,它将基本类型绑定到 Short。实际上,这个基类型是一个抽象类,所以我的软件添加了子类的对象作为键。为了编组和解组这些类型,我开发了一个适配器,但不幸的是,无论我对注释做了什么,这个适配器都从未使用过,所以输出的 XML 文件是错误的。我在方法和调试软件中放置了一些断点,这些断点处有更新的停止点。

我的问题是:我应该在代码中做什么才能用我的适配器正确处理这个 HashMap?

带有基类的HashMap所在的类是这样的:

此时基类的声明如下所示

其中一个子类看起来像这样

如您所见,我编写了一个适配器,它应该将完全不同的子对象转换为 XML 文件中标准化的东西。适配器如下所示:

编辑(添加解决方案)

所以我用另一种方式制作了我想要的东西。我只是为整个 HashMap 制作了一个适配器,而不是尝试执行 marschall 和 unmarschall LugerCompetitor 本身。我的解决方案如下,当我生成 XML 时它似乎可以工作。相反的方向仍需发展。

0 投票
0 回答
182 浏览

java-8 - jaxb-runtime-2.3.0 java.lang.NumberFormatException:不是│数字:未定义

虽然我见过其他非常相似的问题,但我还没有找到一个能给我适当解决方案的问题。

我有 XML 像这样进来

属性“id”定义为

当请求被解组时,它会因这条消息而崩溃

从其他帖子我需要创建一个 XmlAdapter 但我不确定什么类以及如何将它放入我现有的代码中。

我想做的是简单地忽略那些 id="undefined" 的行,而不拒绝导致丢失数据的整个请求。

0 投票
1 回答
180 浏览

java - Compile-Time and Load-Time Weaving and Autowired on XMLAdapter not working

I have an XML-based database and I have defined a User model with a list of references to Role (another model). I have attached an XMLAdapter to roles property to auto-populate roles. For that, I've @autowired the RoleRepository in this adapter.

However, the repository is never autowired (always null), no matter what I do. I have configured Compile-Time Weaving, Load-Time Weaving, and also tried an instrumentation java agent that is able to load itself into the running JVM invesdwin-instrument.

And the roles field in User

I would like to know what I've missed here with weaving. A simpler way to achieve these auto-populating properties is also welcome.

0 投票
0 回答
121 浏览

java - JAXB MOXy - XmlRootElement 对象上未读取 XmlJavaTypeAdapter 注释

我有一个简单的类,它必须是marshalled/unmarshalled具有特定的XmlAdapter

我的适配器如下:

我认为这足以告诉JAXB引擎使用提供的适配器类来编组/解组 SimpleClass 对象。看起来适配器没有在@XmlRootElement对象上调用,而只是在它的字段上调用。实际上,如果我XmlJavaTypeAdapter在字段上使用注解"bytes",例如调用适配器。

任何帮助将不胜感激。

0 投票
0 回答
28 浏览

java - 如何在java 8中将json数据时间对象转换为字符串

我有一个应用程序,当我在自由服务器上运行它时,localdatetime 可以作为字符串正常工作,例如“ 2017-05-27T22:14:30 ”,但是当我在 websphere 服务器上运行相同的应用程序时,localdatetime 显示为对象,例如如下:

我用这个:DateTimeFormatter formatDate = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")

服务器的日期格式是否不同,我该如何解决这个问题。

0 投票
1 回答
86 浏览

java - JAXB XMLAdapter:有没有办法将此方法转换为 JAXB XmlAdapter

我有一个 JSON 文件,我正在尝试XML使用JAXB注释方法将其转换为。现在一切正常,我可以将其转换JSONXML. 现在我正在尝试稍微重构代码,以便我的类看起来干净。因此,我试图删除我的方法class并使其JAXB XMLAdapter可以被其他类重用。

基本上我想将XMLSupport方法​​从CarInfo类移动到XMLAdapter. 当我CarInfo将对象移动到XMLAdapter.

以下是我的JSON文件(为简单起见已对其进行了修改):

以下是XML我希望JAXB提供的:(观察carInfo不存在JSON但我需要XML匹配标准的标签XSD

以下是我拥有的类:(Car与 JSON 元素匹配的类)

以下是通过添加标签MYCar构建的类:XMLcarInfo

以下是我的CarInfo类,它充当additional围绕类构建标签的助手MyCar

以下是我的Main课程,它实际上是XML通过使用JAXBCOntext

现在回到我的主要问题:正如我们从MyCar类中看到的那样,我有一个XMLSupport实际填充CarInfo对象的方法,然后使用该方法创建XML. 有没有办法可以把它移到XMLAdapter

我尝试创建XMLAdapter但我不确定如何 CarInfo从适配器填充对象:

以下是我Adapter尝试过的课程: public class ExtensionAdapter extends XmlAdapter<CarInfo, CarInfo> {

0 投票
1 回答
157 浏览

java - 有没有办法将 Class 作为参数传递给 JAXB XMLAdapter 或从另一个类访问 Getter 方法

我正在尝试为XMLAdapter我的一个对象创建一个类。我需要Getters从另一个类访问,以便可以从该类的 Getters 填充一些对象,但我无法这样做。

Child基本上,我想GetterXMLAdapter. 我可以创建一个Child类的对象并访问,但它会导致NULL. 最初,我ObjectsChildandParent类中填充。我想在其中访问相同的值,XML Adapter所以我想知道是否有办法将类的引用传递给我的XMLAdapter.

我有以下Parent将具有值的类:

以下是我的Child课程,将在编组期间用于创建XML

以下是我的扩展类:

以下是我的XMLAdapter课:

基本上,我想访问其中的ChildglassGetter方法,XMLAdapter以便我可以用它来填充我的ExtensionEventID。我尝试了很多东西,但没有任何效果,所以我在这里发帖。

有没有办法可以将我的Child类作为参数传递给它,XMLAdapter以便我可以从中访问Getter方法?因为如果我创建一个新的Child类对象,那么它的所有Getter方法都是空的。但是,一开始我要填充ParentChild类(名称和事件ID)中的所有字段。我只想Extension使用eventID.XMLAdapter

我希望我能够解释需要。如果您有任何建议或示例代码,那么它将非常有用。

请注意:我在这里使用了非常示例的代码。我知道无论我想要实现什么,都可以使用正确的 POJO 和 JAXB 注释来实现,但我的实际类很复杂,我不允许修改它。我只能添加新的注释。因此,我正在尝试使用XMLAdapter.