相关疑难解决方法(0)

如何控制javax.xml.transform.Transformer创建的行结尾?

我正在使用DOM将DOM文档(org.w3c.dom.Document)转换为Stream

Transformer transformer = TransformerFactory.newInstance().newTransformer();
transformer.setOutputProperty(OutputKeys.ENCODING, UTF_8.name());
ByteArrayOutputStream out = new ByteArrayOutputStream();
StreamResult output = new StreamResult(out);
Source input = new DOMSource(document);
transformer.transform(input, output);
Run Code Online (Sandbox Code Playgroud)

该文档包含带换行符的文本节点('\n').在输出中,它们被替换为CRLF("\ r \n"),这是不希望的.有没有办法控制这个(当然,除了之后更换它们)?

我无法控制文档DTD( - > XML空格处理).

(备注:OutputKeys.INDENT不是正确的答案.)

备注:为什么这个问题与问题19102804不同(确保Unix风格的行结尾):

  • 这个问题明确地提到了javax.xml.transform.Transformer以及影响其对行结尾处理的可能性.问题19102804要求任何解决方案,不仅仅是使用javax.xml.transform.Transformer的解决方案.

  • 问题19102804仅限于获得"Unix风格的行结尾"的任务.在我的情况下,理想的解决方案是一个组件,它只是按原样推出DOM模型实例,而不是触及任何节点(到目前为止所做的一切).

  • 更改line.separator系统属性不是一个选项(请参阅注释).

java xml dom

6
推荐指数
1
解决办法
1377
查看次数

如何在Java应用程序中强制使用Windows行结尾?

我有一个Java应用程序写入文件:

BufferedWriter bw = new BufferedWriter(new FileWriter(outputFile));
bw.write(line + lineTermination);
Run Code Online (Sandbox Code Playgroud)

线路终端定义为:

\r\n
Run Code Online (Sandbox Code Playgroud)

我把奇怪的,神秘的空白行插入我的文件中.

如果我将代码更改为:

bw.write(line);
bw.newLine();
Run Code Online (Sandbox Code Playgroud)

但是我想强制一个特定的行结束,而不是使用System属性.客户特别要求一个行结束字符 - 有些甚至有|.它不是一个可行的解决方案,只是使用\n.

以下是缺少行的数据片段:

"KABE","14/01/11","14:35","14:56","1987","US","SS","CO","MARRIED WITH CHILDREN","","EINE SCHRECKLICH NETTE FAMILIE","","N","10","","12","O'NEILL ED","13","SAGAL KATEY"

"PRO7","14/01/11","14:35","14:55","2001","US","SS","CO","SCRUBS","","SCRUBS DIE ANFAENGER","","C","10","BERNSTEIN ADAM","12","BRAFF ZACH","13","CHALKE SARAH"
Run Code Online (Sandbox Code Playgroud)

谢谢你的时间 :-)

java io file

5
推荐指数
1
解决办法
8999
查看次数

标签 统计

java ×2

dom ×1

file ×1

io ×1

xml ×1