Java生成的XML在.Net / SQL中显示特殊字符

时间:2010-10-18 16:10:29

标签: java .net xml jaxb

我们有一个java桌面应用程序,它使用JAXB生成XML文件,然后由.Net应用程序读取并存储在SQL Server数据库中。

我们发现在Java中回车而不是在.Net / SQL中作为回车/换行符过来。

有没有办法告诉Java或Jaxb同时包含回车符和换行符。有没有办法让.Net把它们放进去.CDATA块有帮助吗?

感谢。

4 个答案:

答案 0 :(得分:1)

您究竟是如何创建XML文件的?数据在任何时候都通过PrintStream吗?如果是这样,那么可能就是引入系统相关行分隔符的点。

问题新线究竟在哪里?在文本元素内?或XML标签之间?如果它是前者,那么你应该专注于构建文本的代码,如果是后者,那么它就是XML生成库。

答案 1 :(得分:0)

你可以通过让JAXB不添加缩进来解决这个问题:

Marshaller marshaller = jaxbContext.createMarshaller();
marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, false);  // DEFAULT

如果您使用JAXB类保存到XML,它将自动格式化文档。要删除格式,请不要执行以下操作,只需使用上述方法:

JAXB.marshal(object, System.out);

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

System.getProperty("line.separator");

答案 2 :(得分:0)

我们最终将它们固定在.net端。

我们通过一个用vblf替换vblf的函数传递每个字符串。似乎到目前为止工作。

答案 3 :(得分:0)

事实上,Blaise Doughan的回应非常好(Myabe是一个错字?)

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

对我而言,它保留了Newlines ......