问题标签 [unmarshalling]
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.
jaxb - 如何使用 JAXB 将空元素解组为空字符串
有这样的伪代码:
它产生的输出(我知道这是空元素存在的某种技巧,但这就是它在我的系统中的工作方式,所以在我之前有人这样设置):
这对我来说很好。但是当我解组它时,空字符串没有正确解组,但 korte 将为空。如何让 jaxb 将空元素解组为空字符串?
我使用 JDK6 捆绑的 jaxb。
编辑:
alma 班级看起来像(班级名称已更改,但它是这样的):
java - 没有 @XMLRootElement 的 JAXB 部分解组元素
我正在使用JAXB的部分解组示例,但我无法解组不在根级别的 XML 元素(因为它们没有 @XmlRootElement 标记)。在我的示例中,我尝试阅读 shipTo-Element 而不是 purchaseOrder-Element。
通常我会使用 JAXBElement unmarshal(Source source,Class declaredType) 但由于该示例使用 UnmarshallerHandler 和 XMLFilterImpl 我不知道在哪里告诉 Jaxb 它应该使用哪个类。
我的错误消息是:引起:javax.xml.bind.UnmarshalException:意外元素(uri:“”,本地:“shipTo”)。预期元素是 <{}comment>、<{}purchaseOrder>、<{}purchaseOrders>
我用谷歌搜索了很多,但还没有发现任何有用的东西。
以下是来自 JaxB 网页的示例代码:
主.java
}
拆分器.java
}
Primer.xsd
测试.xml
xml - RESTEasy json JAXB 解组问题
我在 Play 中编写类似应用程序的小型 Tweeter!通过使用 RESTEasy 的简单 REST API。我有一个简单的资源:
我也有这个小包装类:
在客户端,我有类似的包装类和用于创建 RESTEasy 代理的客户端接口,如下所示:
我获取数据的代码:
这非常适用于 XML - 所有推文都按应有的方式打印在屏幕上。问题是我想使用 JSON 作为返回格式。当我将资源和代理 @Produces 注释更改为 @Produces("application/json") 时,我收到以下错误消息:
我的客户端包装器:
而且我不知道如何绕过这个问题。在浏览器中手动调用我的资源的示例输出:
XML:
JSON:
java - jaxb umarshalling 问题:无法获取空 xml 标签上的属性
我必须使用 JAXB 将 xml-soap 字符串解组为 Java 对象。XML 包含许多带有填充属性的空标签,例如消息中的大多数信息按如下方式传递:
我对属性感兴趣。
问题:如果我在解组后检查对象,所有空标签(如上面的标签)在 Java 对象中都没有表示(例如为空)。只有填充的标签(例如 123 已添加到 Java 对象中。也许这种行为符合 xml 标准,但我仍然对属性感兴趣。有人可以告诉我是否有办法获取属性??
可能的解决方法:通过使用绑定文件将每个元素绑定到适配器,在每个元素为 null 时为其赋予默认值 ("")。但我只成功地为简单类型做到了这一点。
使用的版本:我们使用 Java 1.6 中的 jaxb 实现
非常感谢。
威布兰德。
json - Jax-rs unmarshal json - 自定义类型
使用 jax-rs,我不确定如何手动将 JSON 解组到我的自定义 Java 对象中。
从我的浏览器中,我发送了一个带有以下 JSON 的简单 put 请求:
在服务器上,我有一个 BlahResource,它使用这个 JSON 并打印出 Java 对象属性:
这是 Blah 的源代码:
问题是 Blah.myDate 是一个 Joda-time LocalDate 类,它没有 dayOfMonth、monthOfYear 和 year 的设置器。因此,例如,当我运行它时,会引发以下异常:
这对我来说很有意义。问题是我不知道如何编写某种适配器,以便每当遇到类型 LocalDate 时,我的适配器类用于将 JSON 转换为 LocalDate。
理想情况下,我想做这样的事情:
更新
我现在尝试了两种方法,似乎都没有奏效。
1)使用对象映射器
看来我需要做的就是获取 ObjectMapper 的句柄并添加一个反序列化器。所以我创建了这个提供者。令我惊讶的是,我将我的 dserializer 命名为:LocalDateDeserializer,当我有 eclipse 自动修复导入时,我震惊地看到 Jackson 已经为 Joda 提供了一个扩展。当我启动服务器时,它会找到提供程序,但否则似乎从未调用过此代码。
2)我尝试的第二种方法是直接在字段上指定@JsonDeserialize 注解。
这似乎也没有被调用。
我不知道该怎么办。这似乎是一个非常基本的问题。
更新 2
我正在考虑放弃使用反序列化的杰克逊(即使它与泽西岛配合得很好)。
我已经在使用 flexjson 进行序列化,而且似乎 flexjson 对反序列化同样简单。所有这些其他库都有一些抽象和不必要的复杂性。
在 Flexjson 中,我只需要实现 ObjectFactory:
它看起来很像我最初发布的“适配器”类!我的资源方法现在变成了:
java - 如何在 JAXB 中调试编组?
在编组期间,我得到了下一个异常
所以我想查看 [row,col]:[1,1127] 所在的 xml。请建议。
jaxb - 使用 JAXB 解组会导致:javax.xml.bind.UnmarshalException(无效字节序列)
这是我的问题:我编写了一个程序来解组作为输入给出的 XML 文件,结果证明我的程序在我的开发环境中运行良好,但是同样的程序将在我的客户端环境中产生以下异常:
javax.xml.bind.UnmarshalException - 带有链接异常:[java.io.UTFDataFormatException:2 字节 UTF-8 序列的无效字节 2。]
作为我程序输入的 XML 文件使用 UTF-8 作为编码类型。Unmarshaller 对象使用默认编码类型,即 UTF-8,因为我没有为其设置任何属性值。此外,我没有为 unmarshaller 设置模式,所以我什至没有请求 XML 验证。
有没有人有任何想法或是否有人已经遇到过同样的问题?
提前致谢
xsd - 使用 XMLBeans 为空元素生成结束标记
我有以下 xsd :
如果我只为名称设置值,即
然后 XMLBeans 生成以下 xml:
但我需要生成以下类型的 xml,这意味着关闭</>
所有未在程序中设置值的元素的标签:
<address/>
好吧,如果我设置一个空字符串即生成 XMLBeansemp.setAddress("");
有什么方法可以使用 XMLBeans 来满足这样的要求,而无需设置空字符串。
而且,我们无法为 int 类型的元素 age 设置空字符串。
任何帮助,将不胜感激。
java - 如何将数据库 XML 输出映射到 JAXB 派生对象模型
我正在请求指向资源/材料的链接,这将帮助我解决以下问题(这是一个问题,因为我是 Java/JAXB 的新手并且来自 PHP 背景)。
我收到了一个由组织创建和维护的复杂 XSD。我使用 JAXB 2.1 创建了 java 对象模型。我需要将数据库字段映射到 java/jaxb 派生类。数据库字段/元素通过简单的 XML 输出呈现。XML 数据库记录输出示例如下:
JAXB 派生类的示例:
我如何将 xml 元素映射<PROBLEM_DATE>
到问题日期?请提供可以帮助我入门的文章/教程。此外,XML 数据库提取很大,有近 500 个字段/xml 元素,有没有办法自动映射或必须全部手动完成?
java - Jaxb - 我如何将一个 xml 元素解组到多个字段?
xml:
<root>
<element>value (something)</element>
</root>
我需要将此 xml 解组为我的 java 类中的两个不同字段。
我尝试了以下但没有奏效。第一个字段具有正确的值,第二个字段为空。
爪哇:
如何在不创建一个类来保存值并将其映射到“元素”的情况下实现这一点?