2 votes

Convertir un objet XML en une chaîne de caractères dans ColdFusion

Dans ColdFusion, je peux analyser une chaîne de données au format XML en un objet XML. en utilisant xmlParse() . Comment puis-je le reconvertir en chaîne de caractères ?

Lorsque j'ai essayé d'utiliser toString() il lance une erreur "il ne peut pas convertir un objet complexe en objets simples....", ce qui est ironique car c'est ce qu'il est censé faire.

Je dois utiliser XMLTransform() qui exige le premier argument doit être une chaîne xml. Mais j'ai également besoin d'utiliser xmlSearch() pour obtenir un nœud à passer dans ma transformation, et xmlSearch renvoie un xmlObject. Je dois donc maintenant remettre cet objet au format chaîne xml pour le passer à xmlTransform.

3voto

jpmyob Points 1605

Merci à tous ;

La cause de mon problème est qu'en raison de la structure de ce XML particulier, mon XMLSearch a retourné un tableau avec plusieurs éléments. Donc, en essayant d'utiliser toString() sur ce résultat a provoqué une erreur.

Code :

    pXML = xmlParse( _xml );
    myElements = XmlSearch( pXML, "//data" );   
    writeoutput( toString( myElements ) );

Résultat/Erreur :

    Error Occurred While Processing Request
    Complex object types cannot be converted to simple values. 

Solution

    writeOutput( toString( myElements[1] ) );

Le fichier XML comporte plusieurs nœuds imbriqués nommés "data", et XMLSearch() parcourait et renvoyait chaque nœud.

Merci encore pour votre contribution.

0voto

JamesRLamar Points 457

Essayez de sortir le texte XML à l'intérieur de cfxml, puis de le convertir au format chaîne de caractères comme suit :

<cfxml variable="xmlObject" casesensitive="yes">
<rss xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" version="2.0">
</rss>
</cfxml>
<cfoutput>#ToString(xmlObject)#</cfoutput>

OU

<cffile action="write" file="#ExpandPath('RSS.xml')#" output="#ToString(xmlObject)#">

Pour plus d'informations sur toString() http://help.adobe.com/en_US/ColdFusion/9.0/CFMLRef/WSc3ff6d0ea77859461172e0811cbec22c24-7f9e.html

Si ce n'est pas ce dont vous avez besoin, pourriez-vous préciser ?

0voto

migarich Points 95

Je mettrais le XML dans un cfsavecontent. Et utiliser la variable comme une chaîne de caractères

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X