Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java LF和CR LF组合的XMLFormatter问题_Java_Xml_Xml Parsing_Xml Formatting - Fatal编程技术网

Java LF和CR LF组合的XMLFormatter问题

Java LF和CR LF组合的XMLFormatter问题,java,xml,xml-parsing,xml-formatting,Java,Xml,Xml Parsing,Xml Formatting,我正在使用dom4j Outpurformat和文档对象进行XML格式化 如果Win->\r\n和Linux->\n 如果我传递单行xml文件,它将正常工作,获得预期的EOL(crlf) 但是,如果我传递多行xml文件,无论现有行附带什么(LF),都会附带新行(CR-LF) 例: 输入文件: <root> <emp> <name>myname</name> </emp> </

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

如果
Win->\r\n和Linux->\n

如果我传递单行xml文件,它将正常工作,获得预期的EOL(
crlf

但是,如果我传递多行xml文件,无论现有行附带什么(
LF
),都会附带新行(
CR-LF

例: 输入文件:

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

它在linux中工作正常,一直都是“LF”,但上面提到的问题是在windows主机上。它是LF和CF-LF的组合。

字符串在java中是不可变的。所以必须替换换行符并分配给变量

  • CR=\r;-回车
  • LF=\n;-线路馈电
  • CRLF=\r\n-行尾

    xmlContent=xmlContent.replaceAll(“\r\n”和“).repalcell(“\n”和“).repalcell(“\r”和“)


    • 字符串在java中是不可变的。所以必须替换换行符并分配给变量

      • CR=\r;-回车
      • LF=\n;-线路馈电
      • CRLF=\r\n-行尾

        xmlContent=xmlContent.replaceAll(“\r\n”和“).repalcell(“\n”和“).repalcell(“\r”和“)


        • 在我看来,dom4j的行为是正确的。它只需在缩进输出时添加换行符(对于windows操作系统为CR+LF)。额外的LF来自原始文件(我猜它使用unix约定)。 xml解析器将输入中的LF解释为文本节点,这样您也可以在输出中获得它们。 如果你试试呢

          xmlContent = xmlContent.replaceAll("\x0a","")
          
          否则,您可以将xml读取器配置为忽略空白

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

          但这也会影响元素内部的空白。

          在我看来,dom4j的行为是正确的。它只需在缩进输出时添加换行符(对于windows操作系统为CR+LF)。额外的LF来自原始文件(我猜它使用unix约定)。 xml解析器将输入中的LF解释为文本节点,这样您也可以在输出中获得它们。 如果你试试呢

          xmlContent = xmlContent.replaceAll("\x0a","")
          
          否则,您可以将xml读取器配置为忽略空白

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

          但这也会影响元素内部的空白。

          输出是否来自Windows主机?是的Windows主机是来自Windows主机的输出?是的Windows主机这与空白无关,正如我提到的,输入文件中的所有行都使用EOL as LF(Linux格式)修改,甚至我使用记事本++转换windows的EOL。使用formatter无论添加了什么新行,它都带有“CR LF”。您使用的是Dom4j的哪个版本?使用Dom4j 1.6.1这与空白无关,正如我提到的,输入文件中的所有行都使用EOL修改为LF(Linux格式),甚至我使用notepad++转换windows的EOL。使用格式化程序无论添加了什么新行,它都带有“CR LF”。您使用的是Dom4j的哪个版本?使用的是Dom4j 1.6.1