问题标签 [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.
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 吗?
谢谢..!
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 设置为解组器,因此它只能填充正在解组的多边形内的订阅者或标签。
有没有办法组合这些适配器?或者有没有更好的方法来做事。
谢谢!
java - 覆盖第 3 方库类的 XmlAdapter
我正在使用 jaxbMarshaller 为第三方库类生成 xml。由于将 Calendar 对象转换为字符串的库 XmlAdapter 未使用 TimeZone 字段,因此编组器为 pojo 类的每个 Calendar 字段生成错误的 xml。
第 3 方库 XmlAdapter 使用以下类进行日历到字符串的转换:
所以我想为 Calendar 字段覆盖 XmlAdapter 的行为并尝试下面的示例,但似乎它不起作用:
我的自定义 XmlAdapter 正在使用以下类进行转换:
然后我完成了注册表,例如:
谁能帮我知道这是否可行,如果是,我哪里出错了?
java - JAXB 和一个 XmlAdapter 用于映射到哈希映射中的基本类型
我正在开发一些 JavaSE GUI 应用程序,它必须从 XML 文件存储和加载它的数据(源代码在这里可用:https ://github.com/SP8EBC/MKS_JG )
在数据结构的某个地方,我有一个 HashMap,它将基本类型绑定到 Short。实际上,这个基类型是一个抽象类,所以我的软件添加了子类的对象作为键。为了编组和解组这些类型,我开发了一个适配器,但不幸的是,无论我对注释做了什么,这个适配器都从未使用过,所以输出的 XML 文件是错误的。我在方法和调试软件中放置了一些断点,这些断点处有更新的停止点。
我的问题是:我应该在代码中做什么才能用我的适配器正确处理这个 HashMap?
带有基类的HashMap所在的类是这样的:
此时基类的声明如下所示
其中一个子类看起来像这样
如您所见,我编写了一个适配器,它应该将完全不同的子对象转换为 XML 文件中标准化的东西。适配器如下所示:
编辑(添加解决方案)
所以我用另一种方式制作了我想要的东西。我只是为整个 HashMap 制作了一个适配器,而不是尝试执行 marschall 和 unmarschall LugerCompetitor 本身。我的解决方案如下,当我生成 XML 时它似乎可以工作。相反的方向仍需发展。
java-8 - jaxb-runtime-2.3.0 java.lang.NumberFormatException:不是│数字:未定义
虽然我见过其他非常相似的问题,但我还没有找到一个能给我适当解决方案的问题。
我有 XML 像这样进来
属性“id”定义为
当请求被解组时,它会因这条消息而崩溃
从其他帖子我需要创建一个 XmlAdapter 但我不确定什么类以及如何将它放入我现有的代码中。
我想做的是简单地忽略那些 id="undefined" 的行,而不拒绝导致丢失数据的整个请求。
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.
java - JAXB MOXy - XmlRootElement 对象上未读取 XmlJavaTypeAdapter 注释
我有一个简单的类,它必须是marshalled
/unmarshalled
具有特定的XmlAdapter
:
我的适配器如下:
我认为这足以告诉JAXB
引擎使用提供的适配器类来编组/解组 SimpleClass 对象。看起来适配器没有在@XmlRootElement
对象上调用,而只是在它的字段上调用。实际上,如果我XmlJavaTypeAdapter
在字段上使用注解"bytes"
,例如调用适配器。
任何帮助将不胜感激。
java - 如何在java 8中将json数据时间对象转换为字符串
我有一个应用程序,当我在自由服务器上运行它时,localdatetime 可以作为字符串正常工作,例如“ 2017-05-27T22:14:30 ”,但是当我在 websphere 服务器上运行相同的应用程序时,localdatetime 显示为对象,例如如下:
我用这个:DateTimeFormatter formatDate = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")
服务器的日期格式是否不同,我该如何解决这个问题。
java - JAXB XMLAdapter:有没有办法将此方法转换为 JAXB XmlAdapter
我有一个 JSON 文件,我正在尝试XML
使用JAXB
注释方法将其转换为。现在一切正常,我可以将其转换JSON
为XML
. 现在我正在尝试稍微重构代码,以便我的类看起来干净。因此,我试图删除我的方法class
并使其JAXB XMLAdapter
可以被其他类重用。
基本上我想将XMLSupport
方法从CarInfo
类移动到XMLAdapter
. 当我CarInfo
将对象移动到XMLAdapter
.
以下是我的JSON
文件(为简单起见已对其进行了修改):
以下是XML
我希望JAXB
提供的:(观察carInfo
不存在JSON
但我需要XML
匹配标准的标签XSD
)
以下是我拥有的类:(Car
与 JSON 元素匹配的类)
以下是通过添加标签MYCar
构建的类:XML
carInfo
以下是我的CarInfo
类,它充当additional
围绕类构建标签的助手MyCar
:
以下是我的Main
课程,它实际上是XML
通过使用JAXBCOntext
现在回到我的主要问题:正如我们从MyCar
类中看到的那样,我有一个XMLSupport
实际填充CarInfo
对象的方法,然后使用该方法创建XML
. 有没有办法可以把它移到XMLAdapter
?
我尝试创建XMLAdapter
但我不确定如何 CarInfo
从适配器填充对象:
以下是我Adapter
尝试过的课程: public class ExtensionAdapter extends XmlAdapter<CarInfo, CarInfo> {
java - 有没有办法将 Class 作为参数传递给 JAXB XMLAdapter 或从另一个类访问 Getter 方法
我正在尝试为XMLAdapter
我的一个对象创建一个类。我需要Getters
从另一个类访问,以便可以从该类的 Getters 填充一些对象,但我无法这样做。
Child
基本上,我想Getter
在XMLAdapter
. 我可以创建一个Child
类的对象并访问,但它会导致NULL
. 最初,我Objects
在Child
andParent
类中填充。我想在其中访问相同的值,XML Adapter
所以我想知道是否有办法将类的引用传递给我的XMLAdapter
.
我有以下Parent
将具有值的类:
以下是我的Child
课程,将在编组期间用于创建XML
:
以下是我的扩展类:
以下是我的XMLAdapter
课:
基本上,我想访问其中的Child
glassGetter
方法,XMLAdapter
以便我可以用它来填充我的Extension
类EventID
。我尝试了很多东西,但没有任何效果,所以我在这里发帖。
有没有办法可以将我的Child
类作为参数传递给它,XMLAdapter
以便我可以从中访问Getter
方法?因为如果我创建一个新的Child
类对象,那么它的所有Getter
方法都是空的。但是,一开始我要填充Parent
和Child
类(名称和事件ID)中的所有字段。我只想Extension
使用eventID
.XMLAdapter
我希望我能够解释需要。如果您有任何建议或示例代码,那么它将非常有用。
请注意:我在这里使用了非常示例的代码。我知道无论我想要实现什么,都可以使用正确的 POJO 和 JAXB 注释来实现,但我的实际类很复杂,我不允许修改它。我只能添加新的注释。因此,我正在尝试使用XMLAdapter
.