问题标签 [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.
java - JAXB HashMap 不可映射
我想将 POJO 类中的 HashMap 转换为 XML。我尝试使用 XmlAdapter,但它只导致 HashMap 的键和值对成为 XML 元素的属性。我需要 Key 是 Element 本身,而 HashMap 的值是元素的值。例如,我需要以下 XML:
我创建了以下类: MyMapType 包含一个 MyMapEntryType 类的列表,该类有两个字段,即 Key 和 Value。如何将 Key 元素更改为 @XmlElement 并将 value 字段分配给 Key 字段?
这是我的源文件。
MyMapType.java
MyMapEntryType.java
另请查找适配器类:
MyMapAdapter.java
这是具有 HashMap 字段的类:
XmlElementMap.java
请告知如何实现这一目标。
问候,
-阿南德
目前它产生以下输出:
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
java - I am having problems annotating model classes to support desired XML unmarshalling
I am interested in using a OXM framework to support unmarshalling of the following XML that will be passed as the HTTP POST payload of a request to a RESTful API call.
This is my first time trying to use a OXM framework and I am having problems annotating my model classes correctly. I am using Spring 3.0 and the JAXB2 Marshaller, but I am indifferent as to the specific marshaller implementation.
Questions:
1) What is the best strategy for annotating my model classes to reflect my desired XML structure? I have an example of how I have been annotating my classes below, and it is resulting in Class has two properties with the same name "XXX"
for my XmlElements when I try to create the Marshaller.
2) What strategy can I take to support in my annotations and classes? I was defining SpatialExtent as an interface and then the class that implements a GeoBoundingBox XmlElement implemented this interface. This works for Java but not for JAXB.
3) Are there any places where the desired XML can be improved to simplify marshalling/unmarshalling?
Any help is appreciated! --Stephan
Background:
Here is an example of the XML I would like to consume:
GeoBoundingBox and TimePeriod are not the only possible types for spatial and temporal extents, but I have not had to define any other types as of yet.
I am using Spring package annotations.
An example of how I have been annotating my model classes:
All XmlElements annotations are on class methods that reference model objects and all XmlAttribute annotations are on class methods that reference datatypes (e.g. private String id
).
I have an early XSD:
marshalling - 如何告诉 castor 将一个空字段编组为一个空标签?
我正在编组一个可以将某些字段设置为空的对象。我正在使用带有 xml 映射文件的 castor 进行配置。我正在编组的课程是这样的:
...和这样的映射文件:
如果该字段为空(简化示例),我现在得到什么:
虽然我想在生成的 XML 中有一个空标签,即使描述字段为空。
jaxb2 - JAXB(MOXy) - 将一个模型对象映射到不同的模式
我在为不同的模式映射一个模型对象(例如:GroupHeader)时遇到问题。这个模式中的每一个都有不同的命名空间,但是一些复杂类型在它们中的每一个中都有几乎相同的结构。所以我想将此元素映射到一个 java 对象。是否可以使用 JAXB 来实现这一点?
第一个架构:
第二种模式:
对不起我的英语不好:)
java - 如何在基于 Spring DAO 的应用程序中实现 xml?
在我的项目中,我使用了 JSF 和 SpringDAO 以及 web 服务。我正在调用各种返回 XML 的 web 服务,我需要解析和使用这个 XML。所以我的问题是......我可以使用什么?
默认情况下,我可以检查 Spring 中的任何内容吗?我是否需要单独解析我的内容并通过核心 java 代码使用它?或者别的什么...
在这种情况下可以做什么?
java - Spring:解组 XML 字符串时出现 OXM 错误(castor)
我正在做 Spring Integration 项目。我想通过解组转换器将 XML 字符串发布到一个通道并在另一个通道中接收 Java 对象。
在我的 Spring 配置中,我使用了这些通道和 bean:
我正在单元测试中尝试这个,所以我有自动连接的通道可以使用:
我想要解组的贸易类是非常微不足道的 POJO:
这是我的 JUnit 测试方法,但在第 3 行出现异常:
最后是堆栈跟踪:
xstream - 如何将特定字段添加到由 xstream 映射的输出 xml
我有一个要映射到 XML 的 POJO。我为此使用 XStream。
例如:
和相应的 XML 将是,
但我的要求是在开始时只有一次日期字段和员工列表。像这样,
如何将不同的元素添加到 XStream 生成的 XML 中。我尝试过使用带有日期和员工名单的 POJO。日期像这样被打印了好几次,
java - Configure XStream to dynamically map to different objects
I am hitting a RESTful 3rd party API that always sends JSON in the following format:
Where ...
is the response object that needs to be mapped back to a Java POJO. For instance, sometimes the JSON will contain data that should be mapped back to a Fruit
POJO:
...and sometimes the JSON will contain data that should be mapped back to an Employee
POJO:
So depending on the RESTful API call, we need these two JSON results mapped back to one of the two:
Unfortunately, I cannot change the fact that this 3rd party REST service always sends back a { "response": { ... } }
JSON result. But I still need a way to configure a mapper to dynamically map such a response
back to either a Fruit
or an Employee
.
First, I tried Jackson with limited success, but it wasn't as configurable as I wanted it to be. So now I am trying to use XStream with its JettisonMappedXmlDriver
for mapping JSON back to POJOs. Here's the prototype code I have:
Unfortunately when I run this I get an exception, because I have xs.alias("response", ...)
mapping response
to 2 different Java objects:
So I ask: what can I do to circumvent the fact that the API will always send back the same "wrapper" response
JSON object? The only thing I can think of is first doing a String-replace like so:
But this seems like an ugly hack. Does XStream (or another mapping framework) provide anything that would help me out in this particular case? Thansk in advance.
java - 如何让 XStream 映射回类型列表?
我正在使用 XStream 将一些 JSON 映射回 Java 对象。我将处理一个可能如下所示的 JSON 字符串:
更新:我相信这个 JSON 可以解释为:
此 JSON 表示包含对象的未命名
widgets
对象。反过来,该widgets
对象包含一组其他未命名的对象。这些未命名的对象中的每一个都包含两个属性:widget_name
和widget_type
。
这里的每一个都Widget
对应widgetlist
一个 POJO:
我希望将上面的 JSON 字符串映射回 a List<Widget>
,但我似乎无法弄清楚如何正确地为类命名:
我怎样才能让xs
映射器翻译widgetlist
成一个List<Widget>
?提前致谢。