XMlformatter问题与LF和CR LF的组合



我正在使用dom4j ofpurformat和文档对象进行XML格式。

我正在基于OS设置LinesEparator,如果Win -> rn and Linux -> n

如果我传递单行XML文件,它可以正常工作,获得EOL(CR LF)。

但是,如果我通过多行XML文件,则任何现有行带来的(LF)随附的新行都附带(CR LF

ex:输入文件:

    <root>
      <emp>
        <name>myname</name>
      </emp>
    </root>

输出:

    <root> LF
    CR LF
      <emp>LF
    CR LF
        <name>myname</name>LF
    CR LF
      </emp>LF
    CR LF
    </root>LF
    CR LF

我试图替换EOL仍然无法正常工作我尝试了两种方式

xmlContent= xmlContent.replaceAll("n","rn")
xmlContent = xmlContent.replaceAll("\n","rn")

它在Linux中正常工作,这是所有时间" LF",但上述问题在Windows主机上。它结合了LF和CF LF的结合。

字符串在Java中不可变。因此,必须替换线路断裂并分配到变量。

  • cr = r; - 马车返回
  • lf = n; - 线饲料
  • crlf = r n-线的结尾

    xmlContent = xmlContent.ReplaceAll(" r n",")。repalceall(" n",")。repalceall(" r",");;

在我看来,dom4j的行为是正确的。它只需在缩进输出时添加newline(Windows OS的CR LF)即可。额外的LF来自原始文件(我想使用UNIX约定)。XML解析器将输入中的LF解释为文本节点,因此您也可以将它们放在输出上。如果您尝试

怎么办
xmlContent = xmlContent.replaceAll("x0a","")

否则,您可以配置XML读取器以忽略Whitespace

SAXReader xmlReader = new SAXReader();
xmlReader.setStripWhitespaceText(true);

,但这也会影响元素内的白色空间。

相关内容

  • 没有找到相关文章

最新更新