ColdFusion:XmlParse不保留回车

ColdFusion:XmlParse不保留回车,coldfusion,newline,tostring,carriage-return,Coldfusion,Newline,Tostring,Carriage Return,Test.xml: <?xml version="1.0" encoding="UTF-8"?> <node>line1 line2 line3</node> 您是否尝试在cffile标记中使用参数charset='utf-8'?我无法复制您在Mac OSX上使用ColdFusion 9.0.1所谈论的任何内容。空白区域在进入时被保留。我尝试了上面两个例子,它们(大部分)都如预期的那样有效。实际上,我在replace()中没有看到任何CRs,我只看到了LFs

Test.xml:

<?xml version="1.0" encoding="UTF-8"?>
<node>line1
line2
line3</node>

您是否尝试在cffile标记中使用参数charset='utf-8'?

我无法复制您在Mac OSX上使用ColdFusion 9.0.1所谈论的任何内容。空白区域在进入时被保留。我尝试了上面两个例子,它们(大部分)都如预期的那样有效。实际上,我在replace()中没有看到任何CRs,我只看到了LFs。但是它维护了所有这些属性。

XML解析器将CR/LF标准化为LF。要保持CR/LF下线,请使用实体引用。见下文:

<cfsavecontent variable="xmlvar">
<nodes>
    <node>
      line1&#x000D;&#x000A;
      line2&#x000D;&#x000A;
      line3&#x000D;&#x000A;
    </node>
</nodes>
</cfsavecontent>

第1行和第x000D行
;
第2行和第x000D行
;
第3行和第x000D行
;

CF 8,Windows XP Professional SP3也在CF 9上复制。在我看来,基于一点搜索,默认情况下XML解析器应该保留空白,因为大多数时候空白在数据中没有意义,在重要的位置(在布局中)很少。但是看起来有一个属性可以设置为告诉解析器保留空白。我不知道它在这种情况下是否有效,因为我没有您在我的系统上描述的任何问题。参考:OSX不使用CR/LF作为下线标记。Wikipedia有一个EOL字符和使用它们的系统的列表:
<cfsavecontent variable="xmlvar">
<nodes>
    <node>
line1
line2
line3
    </node>
</nodes>
</cfsavecontent>

<cfset vtext = "#xmlvar#">
<cfset vtext = Replace(vtext,Chr(10),'LF','All')>
<cfset vtext = Replace(vtext,Chr(13),'CR','All')>
<cfdump var = "#vtext#">
<!--- outputs CRLF<nodes>CRLF <node>CRLFline1CRLFline2CRLFline3CRLF </node>CRLF</nodes>CRLF --->
<cfset xmldoc = XmlParse(xmlvar)>
<cfset vtext = "#xmldoc.nodes.node.XmlText#">
<cfset vtext = Replace(vtext,Chr(10),'LF','All')>
<cfset vtext = Replace(vtext,Chr(13),'CR','All')>
<cfdump var = "#vtext#">
<!--- outputs LFline1LFline2LFline3LF --->
<cfsavecontent variable="xmlvar">
<nodes>
    <node>
      line1&#x000D;&#x000A;
      line2&#x000D;&#x000A;
      line3&#x000D;&#x000A;
    </node>
</nodes>
</cfsavecontent>