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 

+0

因此,我们有一个Java/Swing的UI(文本盒子),它使用jgoodies框架绑定到对象。我们使用Jaxb将对象“保存”到一个xml文件中。然后使用xsd将xml文件导入到.net中的一组对象。这些对象反过来被手动持久化到一个sql数据库。我没有意识到我们是否正在浏览PrintStream。 – 2010-10-18 17:15:25

你可以通过具有JAXB不添加缩进解决这个问题。要删除格式,请不要执行以下操作,只需使用上述方法:

JAXB.marshal(object, System.out); 

您也可以尝试其他JAXB实现。我领导MOXy JAXB实施。当我们的实现格式化文档时,使用以下内容

System.getProperty("line.separator"); 
+0

我们试过这个,它没有帮助。任何其他想法?我们使用MOXY JAXB为时已晚。谢谢。 – 2010-10-18 18:28:11

+1

与内容或格式相关的特殊字符?如果它们与用户提供的内容相关,则需要自己进行转换,如果它们与格式有关,并且您尚未启用(或禁用)此JAXB功能,则其他某个阶段将提供格式设置。 – 2010-10-18 18:36:53

+0

它们与用户提供的内容有关 – 2010-10-19 09:09:34

事实上布莱斯Doughan给定的反应是相当的精细(Myabe一个错字?)

Marshaller marshaller = jaxbContext.createMarshaller(); 
marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true); // Blaise wrote 'false' here 

对我来说,它保留了换行...