Test.xml:ColdFusion: xmlparse ne conserve pas de retour chariot
<?xml version="1.0" encoding="UTF-8"?>
<node>line1
line2
line3</node>
Code CF:
<cfset xmlfile = ExpandPath("test.xml")>
<cffile action="read" file="#xmlfile#" variable="xmlstring">
<cffile action="write" file="test1.xml" output="#xmlstring#">
<cfset xmldoc = XmlParse(xmlstring)>
<cfset xmltext = ToString(xmldoc)>
<cffile action="write" file="test2.xml" output="#xmltext#">
Le fichier d'entrée fichier test.xml est au format CRLF, codage UTF-8, 77 octets. Le premier fichier de sortie (test1.xml) est au format CRLF, codé ANSI, 76 octets. Le deuxième fichier de sortie (test2.xml) est au format UNIX, codé ANSI, 71 octets.
Le contenu du noeud XML dans le fichier d'entrée est line1 Chr(13)Chr(10) line2 Chr(13)Chr(10) line3
(espaces pour la lisibilité). Le contenu du noeud XML dans le premier fichier de sortie est le même que ci-dessus. Le contenu du noeud XML dans le deuxième fichier de sortie est line1 Chr(10) line2 Chr(10) line3
.
Des idées pour lesquelles le caractère de retour chariot Chr(13)
n'a pas été conservé après la séquence XmlParse/ToString
?
MISE À JOUR: Le problème réside uniquement avec XmlParse. Il ne s'agit pas de ToString ou de cffile. Voici un exemple plus pertinent - vous pouvez tester vous-mêmes:
<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 --->
Quelle version CF et OS? –
CF 8, Windows XP Professionnel SP3 Également reproduit sur CF 9. – dmr
Il me semble, basé sur un peu de recherche, que par défaut XML Parsers ne sont pas censés préserver les espaces, puisque la plupart du temps les espaces n'ont aucun sens dans les données et où c'est important (dans la mise en page) est rare. Mais il semble qu'il existe un attribut que vous pouvez définir pour indiquer à l'analyseur de préserver les espaces. Je n'ai aucune idée si cela fonctionne dans ce cas parce que je n'ai aucun des problèmes que vous décrivez sur mon système. ref: http://www.w3.org/TR/REC-xml/#sec-white-space –