我正在使用JAXB (和一些用于XSLT的Saxon )来解除XML数据的封送。在我的XML文档中,我有一个日期字符串值。
我做了一些研究并对XMLAdapter和@XMLJavaTypeAdapter进行了实验。我在StackOverflow上找到了一个有用的问答:jaxb unmarshal timestamp。其中概述的涉及SimpleDateFormat的解决方案似乎运行良好。
这是我的问题: XML中日期字符串的格式在文档和文档之间是可变的。每次都可以采用不同的日期格式。在当前的系统中(我将用所有这些XML操作来替换),数据库表中有一些数据格式是在解析XML文档时检索和应用的。手工操作。一条条线。(现在你明白了为什么我要用JAXB来代替它,耶!)
,所以问题是:对于不同的文档,将如何更改输入到XMLAdapter中的SimpleDateFormat的日期格式字符串?这样的事情有可能吗?我是否注定要将日期字符串读入字符串,然后将其转换为其他地方的日期?
编辑:,我本来打算删除这个问题,但它得到了投票,所以我想我会写一个正确的答案,关于我最后做了什么。我会暂缓接受我自己的答案,以防有人有洞察力,找到更好的答案。
发布于 2012-06-08 20:27:16
下面是我最后要做的事情:我应用了在我的问题中链接到的Q&A中找到的确切解决方案,在这里找到了:jaxb unmarshal timestamp。
你可能会想:“这似乎让这个家伙遇到了他最初的问题。他的SimpleDateFormat对象中仍然有一个静态的日期格式字符串,但他的日期字符串仍然是可变格式的!他什么都没解决!真是个白痴!”
这是我的解决方案:我已经将XSLT应用于我的XML文档;对于每种XML文档类型,我都有不同的XSLT。因此,我将使用我已经(必须)拥有的XSLT,并在其中添加功能,将日期字符串转换为与我的SimpleDateFormat对象在XMLAdapter中指定的日期格式相同的日期格式。
塔达!我现在不需要配置杰克。我的配置是XSLT固有的,我已经(并且总是)在尝试解封送处理之前应用它。
发布于 2012-06-08 19:58:17
您可以使用XmlAdapter来处理日期格式。由于日期格式因文档而异,所以您可以利用在卸载程序上指定适配器的初始化实例。通过这种方式,您可以设置适合于要解封的文档的日期格式。
示例
https://stackoverflow.com/questions/10953301
复制相似问题