Java生成的XML以.Net/SQL中的特殊字符显示
我们有一个java桌面应用程序,它使用JAXB生成XML文件,然后由.Net应用程序读取并存储在SQL服务器数据库中。Java生成的XML以.Net/SQL中的特殊字符显示
我们发现使用Java返回回车符,而不是以.Net/SQL中的回车/换行符结束。
有没有办法告诉Java或Jaxb同时包含回车符和换行符。有没有办法让.Net把它们放进去。CDATA块会有帮助吗?
谢谢。
我们最终将它们固定在.net端。
我们通过一个函数来传递每个字符串,用vbcrlf代替vblf。似乎工作到目前为止。
您究竟如何创建XML文件?数据是否在任何时候通过PrintStream?如果是这样,那么也许这就是引入系统相关行分隔符的地方。
哪里有问题的换行符?在文本元素内?或者在XML标签之间?如果它是前者,那么你应该关注构建文本的代码,如果是后者,那么它就是XML代码库。如果您使用的是JAXB类保存到XML,它自动格式化文档
Marshaller marshaller = jaxbContext.createMarshaller();
marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, false); // DEFAULT
:
你可以通过具有JAXB不添加缩进解决这个问题。要删除格式,请不要执行以下操作,只需使用上述方法:
JAXB.marshal(object, System.out);
您也可以尝试其他JAXB实现。我领导MOXy JAXB实施。当我们的实现格式化文档时,使用以下内容
System.getProperty("line.separator");
我们试过这个,它没有帮助。任何其他想法?我们使用MOXY JAXB为时已晚。谢谢。 – 2010-10-18 18:28:11
与内容或格式相关的特殊字符?如果它们与用户提供的内容相关,则需要自己进行转换,如果它们与格式有关,并且您尚未启用(或禁用)此JAXB功能,则其他某个阶段将提供格式设置。 – 2010-10-18 18:36:53
它们与用户提供的内容有关 – 2010-10-19 09:09:34
事实上布莱斯Doughan给定的反应是相当的精细(Myabe一个错字?)
Marshaller marshaller = jaxbContext.createMarshaller();
marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true); // Blaise wrote 'false' here
对我来说,它保留了换行...
因此,我们有一个Java/Swing的UI(文本盒子),它使用jgoodies框架绑定到对象。我们使用Jaxb将对象“保存”到一个xml文件中。然后使用xsd将xml文件导入到.net中的一组对象。这些对象反过来被手动持久化到一个sql数据库。我没有意识到我们是否正在浏览PrintStream。 – 2010-10-18 17:15:25