1

我正在使用 JAXB(以及用于 XSLT 的一点 Saxon)来解组 XML 数据。在我的 XML 文档中,我有一个日期字符串值。

我做了一些研究并试验了 XMLAdapter 和 @XMLJavaTypeAdapter。我在这里找到了关于 StackOverflow 的有用问答:jaxb unmarshal timestamp。那里概述的涉及 SimpleDateFormat 的解决方案似乎运作良好。

这是我的问题:XML 中日期字符串的格式因文档而异。每次可以采用不同的日期格式。在当前系统(我用所有这些 XML 操作替换)中,在解析 XML 文档时检索和应用数据库表中的日期格式。手动。逐行。(现在你明白我为什么要用 JAXB 替换它了,是的!)

所以问题是:我将如何更改为不同文档提供给 XMLAdapter 中 SimpleDateFormat 的日期格式字符串?这样的事情甚至可能吗?我是否注定要将日期字符串作为字符串读取,然后稍后将其转换为其他地方的日期?

编辑:我只是要删除这个问题,但它得到了投票,所以我想我会写一个关于我最终做了什么的正确答案。我将暂缓接受我自己的答案,以防有人有一些见解可以得出更好的答案。

4

2 回答 2

0

您可以使用 anXmlAdapter来处理日期格式。由于日期格式因文档而异,您可以利用在 Unmarshaller 上指定适配器的初始化实例。通过这种方式,您可以设置适合您要解组的文档的日期格式。

例子

于 2012-06-08T19:58:17.200 回答
0

这是我最终得到的结果:我应用了在我的问题中链接到的问答中找到的确切解决方案,在这里找到:jaxb unmarshal timestamp

你可能会想:“这似乎给这个人留下了和他原来一样的问题。他的SimpleDateFormat对象中仍然有一个静态日期格式字符串,但他的日期字符串仍然是可变格式!他没有解决任何问题! 真是个傻瓜!”

Here is my solution: I'm already applying an XSLT to my XML document; I have a different XSLT for each XML document type. So I'm going to take the XSLT I already (have to) have, and add functionality in it to convert the date string to the same date format as the one specified in my SimpleDateFormat object in my XMLAdapter.

Ta da! I don't need to configure jack now. My configuration is inherent in the XSLT I already (and always) apply before I attempt to unmarshal.

于 2012-06-08T20:27:16.240 回答