问题标签 [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.
java - 让 MOXy @XmlPath 使用命名空间
我正在编写一个脚本来使用 JAXB 和 MOXy 解析 KML 文件,但我很难让 @XmlPath 使用提供的命名空间。
如果我的 KML 看起来像这样:-
...我的 bean 看起来像这样:-
...然后,kml.getName()
返回Test
,它应该像它一样工作。
但是,如果我的 KML 包含这样的命名空间:-
...我的 bean 看起来像这样:-
...然后,kml.getName()
返回null
。
我确实有jaxb.properties
正确的包级别,并且我正在使用以下 MOXy 的依赖项:-
我到底在这里想念什么?谢谢。
java - JAXB / EclipseLink:动态取消映射类型
我有一项服务应该能够在不同的细节级别或不同的详细模式下提供“用户配置文件”。
这些用户配置文件与 JPA2 在数据库中同步,并且一切正常。使用 MOXy (EclipseLink) 我还在 XML 中序列化配置文件,这里一切正常。
但是,详细模式(BRIEF、SUMMARY、FULL)是通过以 XML 序列化的用户配置文件中是否存在特定元素来实现的(例如元素 QueryHistory,在使用简要详细模式时不应序列化)。
简而言之:我想向 JAXBContext 指定某些元素不能被序列化,并且我想在运行时指定它。
如果我很好理解,MOXy 可扩展模型 - 刷新http://blog.bdoughan.com/2011/06/moxy-extensible-models-refresh-example.html能够做到这一点,但这里有人知道更简单的方法吗?实现这个功能?
jaxb - moxy:RuntimeTypeInfoSet 的等价物是什么
在 jaxb-impl 中,我可以获得一个 RuntimeTypeInfoSet 对象,该对象可用于从 xml 元数据映射到适当的 java 反射数据。moxy 的等价物是什么。
更新:我的用例是查找映射到元素名称的属性。我当然可以通过使用java反射来做到这一点,但它很麻烦。
jaxb - MOXy JAXB:如何从编组中排除元素
我有我的模型:
我这样填写对象:
这将产生下一个 XML:
如您所见,'id' 属性没有 @XmlPath 注释,但这也存在于最终 XML 中。我知道我可以避免将 'id' 属性设置为 null 的这种行为,但我想知道是否有其他方法。关键是我的真实模型比这个大得多,我必须将很多属性设置为空。
有什么帮助吗?
提前致谢。
java - 将 MOXy 的元数据与实现 java.util.Map 的类一起使用时的 NPE
情况
我正在使用 EclipseLink 的 MOXy,并且正在尝试将外部 OX 映射 XML 与实现 Map 接口的类一起使用。但是,每次我尝试创建 JAXBContext 时,都会得到以下 NPE:
细节
仅当被映射的类实现 java.util.Map 接口时,才会出现此问题。如果我正在映射的类没有实现该接口,那么一切正常。这是我要映射的类的简化示例:
这是我想使用的 MOXy OX 元数据的简化示例:
这是我创建 JAXBContext 的方式
我正在使用 EclipseLink 2.3.2 版,以防万一。我也尝试过使用 2.2.1 版,结果相同。
我的问题
这是我第一次尝试在实现 java.util.Map 接口的类上使用 JAXB,我很好奇我是否遗漏了一些基本的东西。我不希望 OX 映射与 Map 的名称/值对一起使用,而是与添加到类中的自定义 getter 和 setter 一起使用。
这样的配置应该工作吗?
额外细节
- 示例代码中使用的 DelegatedMap 没有扩展java.util.HashMap,它只是包装了一个实例并实现了 Map 接口。此外,该类使用@XmlAccessorType(XmlAccessType.NONE) 进行注释。
- 无论哪个抽象类实现了我用于 SampleClassA 的 Map 接口,我都会遇到相同的错误。如果 SampleClassA 扩展了一个未实现映射的类,则一切正常。
- 我正在使用的代码库需要许多类来实现 Map 接口。
eclipselink - MOXy 可以仅使用 getter 序列化 POJO,而无需在每个 getter 上显式放置注释吗?
所以鉴于我有班级名称:
我想使用映射 XML 序列化此类的实例,而不必列出映射 XML 中的每个属性:
所以理想情况下,我希望有这样的映射文件:
我有一些像这样的遗留 DTO 类仅用于具有 30 个或更多属性的序列化(故意没有设置器),理想情况下,我希望避免在映射文件中列出每个属性。
jaxb - JAXB/MOXy 可以像常规类(非枚举)一样序列化枚举吗?
想象一下我有这样定义的枚举:
默认情况下,MOXy 会将其序列化为 JSON,如下所示:
有没有办法配置 MOXy(在映射文件中)以像常规类一样序列化枚举:
jaxb - 可以在 JAXB/MOXy 中为整个类或在映射文件中全局定义空值序列化策略吗?
我只找到了一种为每个属性定义空处理策略的方法:
有没有办法在 xml-bindings 级别或至少在 java-type 级别的映射文件中全局定义它?
java - 使用扩展类时未调用 JAXB afterUnmarshall
我编写了一个BaseBeanEx
扩展 JAXB 注释 bean () 的 bean ( BaseBean
)。它BaseBean
位于数据结构中某处的列表中,无法更改。该软件会在BaseBeanEx
需要时进行显式转换。我还写了一个ObjectFactory
to createBaseBeanEx
而不是BaseBean
. 这一切都很好,但现在我添加了一个永远不会被调用的afterUnmarshal
方法。BaseBeanEx
这是一个错误还是根据规格?如果以后是这种情况,是否有一些优雅的解决方法?
我正在使用默认的 JAXB 引擎。
java - XmlDiscriminatorNode、XmlSchema 命名空间和 elementFormDefault=QUALIFIED
我正在使用eclipselink-2.3.2。我的包裹有注释:
@XmlSchema(namespace = "http://example.com/namespace", elementFormDefault = XmlNsForm.QUALIFIED)
我有以下课程:
当我尝试像这样反序列化有效的 XML 时:
<box xmlns="http://example.com/namespace"><a thetype="b" /></box>
我得到描述性异常:
如果我@XmlSchema
从包中删除 并xmlns
从根元素中删除属性,它就可以工作。如果我从 QUALIFIED 更改为 UNQUALIFIED,只要我给它提供丑陋的前缀 XML,它就可以工作。
我假设 unprefixed 会起作用,因为它仍然声明默认命名空间,但是尽管没有例外,但该字段仍然为空。
单步执行 EclipseLink 代码后,我可以看到QNameInheritancePolicy.classFromRow
调用时UnmarshalRecord.get
,它正在尝试访问 namespaceURI“http://example.com/namespace”下的属性“thetype”。
当我将 XmlScehma elementFormDefault 更改为 UNQUALIFIED 时,namespaceURI 返回 null 并且属性被正确检索。