为什么dom4j文档对象将XML EOL r n转换为 n

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为什么dom4j文档对象将XML EOL r n转换为 n相关的知识,希望对你有一定的参考价值。

我正在使用DOM4J jar解析xml字符串(我试过1.6.1和2.0.2)下面是我的示例代码

SAXReader reader = new SAXReader();
InputSource inputSource = new InputSource(new StringReader("<root xml:space='preserve'>
<emp>
<name>raj</name>
</emp>
</root>"));
Document document = null;

try {
    document = reader.read(inputSource);
} catch (DocumentException e1) {
    e1.printStackTrace();
}       
String st = document.asXML(); //When I debug I can see below value in this st variable
//<root xml:space='preserve'>
<emp>
<name>raj</name>
</emp>
</root>

为什么将XML EOL(End of Line)从 r n转换为 n?

如果我想保留与“ r n”相同的EOL,有没有可用的选项?

答案

specification授权:

为了简化应用程序的任务,XML处理器必须表现得好像它在解析之前对输入中的外部解析实体(包括文档实体)中的所有换行符进行规范化,方法是翻译两个字符的序列#xD #xA和任何# xD后面没有#xA到单个#xA字符。

您可以设置编写XML文档时使用的行分隔符:

OutputFormat#setLineSeparator(String)

以上是关于为什么dom4j文档对象将XML EOL r n转换为 n的主要内容,如果未能解决你的问题,请参考以下文章

使用dom4j写xml文件——源码

使用dom4j技术来读取xml中的信息。

我用dom4j创建了一个xml文档,没有错误,但运行没有结果,哪位高手指点一下

使用Dom4j对XML文档创建与解析

Java案例:利用dom4j解析XML文件

dom4j解析