我们有一个java桌面应用程序,它使用JAXB生成XML文件,然后由.Net应用程序读取并存储在SQL Server数据库中。
我们发现在Java中回车而不是在.Net / SQL中作为回车/换行符过来。
有没有办法告诉Java或Jaxb同时包含回车符和换行符。有没有办法让.Net把它们放进去.CDATA块有帮助吗?
感谢。
答案 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 ......