问题标签 [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 投票
1 回答
28539 浏览

java - JAXB XmlAdapter 如何用于编组列表?

此类的实例是大型对象图的一部分,并且不在对象图的根部:

使用 Jersey 和 JAXB 将对象图转换为 JSON。我已经XmlAdapter注册了LocalDateLocalTime

问题是它只适用于date财产而不是times财产。我怀疑这与times列表而不是单个值有关。那么,我如何告诉 Jersey/JAXBtimes使用已注册的来编组列表中的每个元素XmlAdapter

更新:

通过添加标量属性并观察 JSON 中的预期输出,我确认LocalTime编组确实适用于标量属性。LocalTimeLocalTime

为了完整起见,这里是 package-info.java:

LocalDateAdapter

LocalTimeAdapter

0 投票
1 回答
453 浏览

jaxb - 扩展 XmlAdapter 以处理 ArrayList 用引号将 [ ... ] 括起来

为了解决 Jersey 中无法正确序列化具有(仅)一个元素的列表的错误,即:

代替

我已经编写了下面的代码,它几乎可以解决它,但是(真气)让我无法告诉它不要将整个结果用双引号括起来,如下所示:

我别无选择,我会非常感谢任何看透这一点的人。请注意,我还尝试将ContextResolver < JAXBContext >作为一些帖子建议的@Provider解决方案,但 Jersey 根本不会调用该代码。此解决方案是唯一接近的解决方案。

顺便说一下,这是 POJO 中的消费字段:

这是代码:

0 投票
1 回答
1745 浏览

java - JAXB XMLAdapter 编组问题

我需要XML使用以下格式生成文件JAXB2,它具有固定可变xml 内容。

什么是约束?

可变XML部分的内容应该是需要嵌入到固定内容中的 5 个不同的内容之一XML schema(计划实现 5 个不同的 java 类来生成它) 。JAXB2.0XML

XML 格式:

我试过什么?

JAXB为上面创建了一个带注释的 Java 类XML metadata。对于可变 XML 部分,我使用BaseUserType了由所有 5 个不同 Classes 扩展的公共 Parent 类 ( ) <user_type>。并尝试使用覆盖marshall(..)操作@XmlJavaTypeAdapter。(如下)

JAXB 注释类:

自定义 XML 适配器类:

我现在在哪里挣扎?

我没有遇到任何错误或警告,XML正在生成(如下所示)。但输出不是预期的。它没有正确嵌入带有 Fixed 的 Variable XML 部分

输出

我的问题是:

  1. 为什么JAXB marshallers不能将“ CustomXMLAdapter”编组内容与父项一起嵌入(UserInfo.class)
  2. 我们有没有其他选择JAXB来做这个简单的?
  3. 如何指定BoundType,ValueTypeXMLAdapter. 为了将内容嵌入到父类编组中,是否需要给出任何特定的类型?
0 投票
0 回答
1101 浏览

java - Using a JAXB XmlAdapter to adapt an entire list without a wrapper element

I'm trying to use an XmlAdapter to unmarshal XML into a custom collection type (that intentionally does not implement the Collection interface due to a conflicting restriction imposed by another use of the class, which unfortunately fails if the class contains any collections). The difficulty is that the XML nodes that will be placed into the collection are not wrapped in a wrapper element.

Here's what my XML essentially looks like:

I can make JAXB unmarshall this to the following POJO:

However, what I want to do is the following:

As you can see, I wrote an XmlAdapter that wants to adapt the entire list, not the individual elements, but it never gets invoked for unmarshalling. (It does get invoked for marshalling.)

If my XML contained a wrapper around the <bar> elements, then I know how to solve this:

because then I could annotate the bars field with @XmlElement(id="wrapper") and the adapter would get correctly called. However, the XML schema comes from an RFC and is entirely unchangeable, so I am stuck as to how to proceed. Any ideas appreciated!

0 投票
1 回答
544 浏览

jaxb - 没有父元素的 JAXB 编组

有两个JavaBean A和B。还有2个String C和D。结构是

我可以将对象 A 编组为 Xml

在某些情况下,我想像这样将 A 编组为 XML

没有 B 标签。是否可以通过 XMLAdapter 或其他方式完成。如果它有一些动态的方式是最好的。谢谢。

0 投票
1 回答
6794 浏览

java - JAXB @XmlAdapter:映射-> 列表适配器?(仅限马歇尔)

我有一个Map<String, String>.
每个人的第一个想法是将其转换为List<Pair<String,String>>Pair作为自定义类)。

我试过@XmlAdapter这样的:

但是我使用的 JAXB impl Eclipse MOXy 以ClassCastException“无法将 HashMap 转换为 Collection”而告终。

JAXB 是否支持这种转换?还是我忽略了一些解释为什么不是的文档部分?

PS:我想得到这样的XML:

我明白了,只需要使用一个中间类。在 XMLCompositeObjectMappingNodeValue.marshalSingleValue( XMLCompositeObjectMappingNodeValue.java:161)中的处理 NPE 中也有描述

0 投票
1 回答
439 浏览

java - 在 XmlAdapter 中获取当前主机

有没有办法在 XmlAdapter 中检索当前的基本 URI?或者这通常是如何归档的?

0 投票
0 回答
493 浏览

java - 通过适配器映射的包装类中的 JAXB 前向引用

我在通过 JAXB 将我的对象映射到 xml 时遇到问题。为了从编组器获取漂亮的 xml,我使用 @XmlJavaTypeAdapter 将 Map.Entry 映射到我的类,该类具有 jaxb 注释以创建漂亮的 xml,但问题是我的包装类中的值只是对真实对象的引用,并且及时解组当调用适配器时,此值中存在空值(该对象稍后在 xml 中指定)并且在解组结束时,当 jaxb 尝试解析此引用时,对象被放入我的包装器对象中,而不是放入我的地图中。

为了更好地理解这里是一个示例 xml:

和 java 类(这只是一个更好地理解问题的示例):

解组后我在地图中有空值。

0 投票
1 回答
38 浏览

java - 是否可以编写一个 XmlAdapter?

即,在 Web 服务器中进行序列化时,我想将 org.jbpm.graph.def.ProcessDefinition 类的所有实例的 processDefinition 字段设置为 null,因此每当从 CXF Web 服务返回值时,我都会避免出现此异常

问的原因是我已经写了下面的类

在 package-info.java 文件中将其定义为

但是它的方法从未被调用过。

0 投票
1 回答
680 浏览

java - JAXB @XmlMixed 和 @XmlAdapter

我正在尝试创建一个 @XmlAdapter 将混合列表中的单词拆分为名为 Word 的 Wrapper 类的对象。此字段还可能包含名为 Group 的 Word 扩展实例。

这个想法是这样的:

相当于:

我正在与我能想到的所有可能的组合 ox XmlMixed 和 XmlAdapter 作斗争,但没有运气!

这是我的最新适配器,它根本不起作用:

还有我的跨度类:

Word 和 Group 只是 String 的包装器。组扩展 Word。

我正在使用 MOXY 以防万一。

先感谢您!