当前位置: 首页 > 工具软件 > JOX > 使用案例 >

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

彭畅
2023-12-01
从简单的说吧。
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);

 类似资料: