论坛首页 Java企业应用论坛

JOX解决乱码和输出时间格式的方法

浏览 2053 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2009-03-06  
从简单的说吧。
1.时间格式的设置
JOXDateHandler会使用系统设置的com.oce.wutka.dateFormat属性,这个属性可能是在dtdparser113.jar中设置的,因为没有源码所以只是猜的。
在你的代码中加入System.setProperty("com.oce.wutka.dateFormat",format);来设置你希望的时间格式。

2.乱码
JOXBeanOutputStream的构造函数可以指定输出的XML文件头的encoding值,但是对内容没有影响,其实我想这也它的一个bug,原因是JOXBeanOutputStream类的writeString(String str)有问题。
 public void writeString(String str) throws IOException {
        write(str.getBytes());
    }

解决办法是继承JOXBeanOutputStream,然后重写这个方法。
 public void writeString(String str) throws IOException {
        write(str.getBytes(encoding));
    }


还有另一种方式,不用JOXBeanOutputStream,使用JOXBeanDOM
JOXBeanDOM dom = new JOXBeanDOM(false);
Document beanToDocument = dom.beanToDocument("MarkTest", b);
TransformerFactory tFactory = TransformerFactory.newInstance();
Transformer transformer = tFactory.newTransformer();
transformer.setOutputProperty("encoding", "GB2312");
transformer.setOutputProperty("indent", "GB2312");
DOMSource source = new DOMSource(beanToDocument);
StreamResult result = new StreamResult(new OutputStreamWriter(
                    new FileOutputStream(new File("bean31.xml")), "GB2312"));
transformer.transform(source, result);




   发表时间:2009-03-06  
DOM模式做的不错么. 我们也用这个不少. 问题早就解决了. 

不过, 还是不放心这东西, 一个国际化都考虑的不好的东西, 还是比较担心的.
0 请登录后投票
   发表时间:2009-03-09  
sdh5724 写道
DOM模式做的不错么. 我们也用这个不少. 问题早就解决了. 

不过, 还是不放心这东西, 一个国际化都考虑的不好的东西, 还是比较担心的.

他可能就没想整复杂,力求简单
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics