Newsgroup: it.lavoro.professioni.webmaster
Titolo: problema scrittura XML

ciao a tutti.
ho realizzato un gestionale per un sito in flash che carica i dati in MySQL 
e pi li scrive in alcuni files XML da qui flash prende il testo e i percorsi 
per le immagini.
il mio problema è che nel file XML i caratteri < > / etc non vengono scritti 
correttamente ma < viene reso con &lt; > con &gt; etc etc, e il caricatore 
flash non mi legge l XML.
posto un pezzo di XML:
<?xml version="1.0" encoding="utf-8"?>
<photos><photo><filename>bracciale1</filename><title>bracciali/logo.png</title><description> 
&lt;![CDATA[&lt;span class="subtitle"&gt;bracciale1 &lt;/span &gt; &lt; p 
align="justify"&gt;Una collezione femminile ognitempo. &lt;/p&gt;
   &lt;span class="highlight"&gt;Descrizione Prodotto&lt;/span&gt;
   &lt;span class="note"&gt;Modello:bracciale1&lt;/span&gt;
   &lt;span class="note"&gt;Tipologia gioiello:bracciale1&lt;/span&gt;
l xml viene scritto da php con DOMDocument,
quale puo essere il problema??
su phpmyadmin vedo che i campi hanno collation utf8_unicode_ci mentre la 
tabella ha collation latin1_swedish_ci (ogni database che creo ha questa 
collation,io poi cambio i campi a mano se ho problemi)


Se crei textnode la conversione ad htmlentities viene fatta in 
automatico e non mi pare sia un male
la collation ï¿œ l'ordine alfabetico, credo abbia ben poco a che fare con 
l'escaping ;)
Flash ï¿œ piï¿œ che in grado di ritrasformare le htmlentities nei caratteri 
corretti anche se non mi risulta abbia funzioni built-in a riguardo
qui trovi un comodo suggerimento
http://www.markledford.com/blog/2009/02/25/as3-htmldecode-htmlencode-xml-hack/

 
http://www.markledford.com/blog/2009/02/25/as3-htmldecode-htmlencode-xml-hack/
ok grazie per la risposta,ma quello che devo fare io � scrivere 
correttamente l xml,non posso intervenire su flash.
io l xml lo faccio scrivere a php con questo codice:
// prendo i valori dal database
$query="SELECT articolo,immagine,descrizione,modello,tipologia,materiali 
FROM prodotti WHERE pagina =\"$pagina\" "; // aggiunto WHERE pagina = 
$pagina";
mysql_query("SET NAMES 'utf8'");
$result=mysql_query($query) or die(mysql_error($db));
    while($row=mysql_fetch_assoc($result)){
      extract($row);
   $var1=$articolo;
   $var2=$pagina."/".$immagine; //PERCORSO IMMAGINE SULL' XML 
$var3=$descrizione;
// creo variabili per la descrizione
$prefisso=" <![CDATA[<span class=\"subtitle\">";
$suffisso=' </span > < p align="justify">Una collezione femminile ognitempo. 
</p>
   <span class="highlight">Descrizione Prodotto</span>
   <span class="note">Modello:'. $modello . '</span>
   <span class="note">Tipologia gioiello:' . $tipologia .  '</span>
   <span class="note">Combinazione Materiali:' . $materiali . '</span>]]>';
$descTotale= $prefisso . $var3 . $suffisso ;
  // #1 - FILENAME
  $filename= $DOM->createElement("filename");
  $photo->appendChild($filename);
  $text_filename = $DOM->createTextNode("$var1");
  $filename->appendChild($text_filename);
  //#2 - TITLE
  $title= $DOM->createElement("title");
  $photo->appendChild($title);
  $text_title = $DOM->createTextNode("$var2");
  $title->appendChild($text_title);
  //#3 - DESCRIPTION
  $description=$DOM->createElement("description");
  $photo->appendChild($description);
  $text_description=$DOM->createTextNode("$descTotale"); //sostituisco $var3 
con $descTotale
  $description->appendChild($text_description);
etc etc.
Dov � l errore????
perche sto cazzo di DOM non scrive giusto???


ï¿œSto cazzo di DOMï¿œ sta scrivendo giusto ;)
Mi sa che stai usando l'RTFM a dosaggio basso
Come riportato chiaramente qui: 
http://www.php.net/manual/en/domdocument.createelement.php
"The value *will not* be escaped. Use DOMDocument::createTextNode() to 
create a text node with escaping support. "
Marco

 Marco
beh ma il createtextnode lo uso:
$filename= $DOM->createElement("filename");
  $photo->appendChild($filename);
  $text_filename = $DOM->createTextNode("$var1");
  $filename->appendChild($text_filename);
e in quella variabile c'è il testo che non viene scritto bene.
scusa ma sara' l ora o il fatto che mi sto scervellando da un po pero' non 
capisco che intendi 


Intendo che è *appunto* il createTextnode che ci mette la trasformazione 
di suo, è stato fatto apposta e fidati che di solito viene da dire: "Oh, 
che bello, meno male che l'hanno fatto"
Use DOMDocument::createTextNode() to create a text node *with* escaping 
support
mi pare abbastanza chiaro:
Se vuoi l'escaping automatico usi createTextNode, altrimenti usa la 
funzione la cui pagina di manuale ti ho linkato.
Marco


ok scusa!abbi pazienza ogni tanto scazzo anchio!
adesso provo e ti so dire
cmq grazie!


np :)

se non ho capito male:
invece che questo
$description=$DOM->createElement("description");
  $photo->appendChild($description);
  $text_description=$DOM->createElement("$descTotale"); //
  $description->appendChild($text_description);
devo scrivere solo questo:
description=$DOM->createElement("description","$descTotale");
  $photo->appendChild($description);
giusto? 


sì
le "" attorno a $descTotale le puoi eliminare

 le "" attorno a $descTotale le puoi eliminare
non va.è uguale a prima 


marco@coredebabbo ~/tmpMount $ cat testXml.php
<?php
$dom = new DOMDocument();
$unescaped = '<a href="
google.com
">pippo</a>';
$test = $dom->createDocumentFragment(); <=== *questa è la magia*
$test->appendXML($unescaped); <=== *assieme a questa*
$container=$dom->createElement('container');
$container->appendChild($test);
$dom->appendChild($container);
echo $xml = $dom->saveXML();
marco@coredebabbo ~/tmpMount $ php testXml.php
<?xml version="1.0"?>
<container><a href="
google.com
">pippo</a></container>
One more down, on with the war :)
Marco

 Marco
ok adesso provo

 Marco
NIENTE DA FARE 

Prova a fare l'output dei testi con url_encode()
Max
-- 
http://www.maxori.it
L'Arte è la capacità di fare cose di nessun valore
e di riuscire a venderle
F. Zappa


Guarda, quello che ti ho postato funziona sulla mia macchina
quindi il problema non ï¿œ php
O sbagli qualcosa tu o c'ï¿œ qualche problema ambientale
io ho fatto la prova in una gentoo
Linux coredebabbo 2.6.34-gentoo-r11 #4 SMP PREEMPT Wed Nov 24 10:55:42 
CET 2010 x86_64 Intel(R) Core(TM)2 CPU 6700 @ 2.66GHz GenuineIntel GNU/Linux
e php ï¿œ configurato come segue
marco@coredebabbo ~ $ php-config
Usage: /usr/bin/php-config [OPTION]
Options:
   --prefix            [/usr/lib64/php5.3]
   --includes          [-I/usr/lib64/php5.3/include/php 
-I/usr/lib64/php5.3/include/php/main 
-I/usr/lib64/php5.3/include/php/TSRM 
-I/usr/lib64/php5.3/include/php/Zend -I/usr/lib64/php5.3/include/php/ext 
-I/usr/lib64/php5.3/include/php/ext/date/lib]
   --ldflags           [ -L/usr/lib64/postgresql-8.4/lib64]
   --libs              [-lcrypt   -lexslt -lresolv -lsqlite -lreadline 
-lncurses -laspell -lpspell -lpq -lpq -lmcrypt -lltdl -lonig -lldap 
-llber -lt1 -lfreetype -lX11 -lXpm -lpng -lz -ljpeg -ldb-4.8 -lgdbm 
-lcurl -lbz2 -lz -lpcre -lcrypt -lrt -lm -ldl -lnsl  -lcrypt -lxml2 -lz 
-lm -lssl -lcrypto -ldl -lz -lcurl -lxml2 -lz -lm -lssl -lcrypto -ldl 
-lz -lxml2 -lz -lm -lnetsnmp -lxml2 -lz -lm -lxml2 -lz -lm -lxml2 -lz 
-lm -lxml2 -lz -lm -lxslt -lxml2 -lz -lm -lcrypt ]
   --extension-dir 
[/usr/lib64/php5.3/lib/extensions/no-debug-zts-20090626]
   --include-dir       [/usr/lib64/php5.3/include/php]
   --php-binary        [/usr/lib64/php5.3/bin/php]
   --php-sapis         [cli apache2handler]
   --configure-options [--prefix=/usr --build=x86_64-pc-linux-gnu 
--host=x86_64-pc-linux-gnu --mandir=/usr/share/man 
--infodir=/usr/share/info --datadir=/usr/share --sysconfdir=/etc 
--localstatedir=/var/lib --prefix=/usr/lib64/php5.3 
--mandir=/usr/lib64/php5.3/man --infodir=/usr/lib64/php5.3/info 
--libdir=/usr/lib64/php5.3/lib --with-libdir=lib64 --without-pear 
--enable-maintainer-zts --disable-bcmath --with-bz2 --disable-calendar 
--with-curl --with-curlwrappers --without-enchant --enable-exif 
--enable-ftp --with-gettext --without-gmp --without-mhash --disable-intl 
--without-kerberos --enable-mbstring --with-mcrypt --without-mssql 
--with-onig=/usr --with-openssl --with-openssl-dir=/usr --disable-pcntl 
--with-pgsql --with-pspell --without-recode --disable-shmop --with-snmp 
--disable-soap --disable-sockets --without-sqlite3 --without-sybase-ct 
--disable-sysvmsg --disable-sysvsem --disable-sysvshm --without-tidy 
--disable-wddx --with-xmlrpc --with-xsl --disable-zip --with-zlib 
--disable-debug --enable-dba --without-cdb --with-db4 --disable-flatfile 
--with-gdbm --disable-inifile --without-qdbm --with-freetype-dir=/usr 
--with-t1lib=/usr --disable-gd-jis-conv --with-jpeg-dir=/usr 
--with-png-dir=/usr --with-xpm-dir=/usr --with-gd --with-ldap 
--without-ldap-sasl --with-mysql=mysqlnd 
--with-mysql-sock=/var/run/mysqld/mysqld.sock --with-mysqli=mysqlnd 
--without-oci8 --without-pdo-dblib --with-pdo-mysql=mysqlnd 
--with-pdo-pgsql --without-pdo-sqlite --without-pdo-odbc --with-readline 
--without-libedit --without-mm --with-sqlite=/usr --enable-sqlite-utf8 
--with-pcre-regex=/usr --with-pcre-dir=/usr 
--with-config-file-path=/etc/php/cli-php5.3 
--with-config-file-scan-dir=/etc/php/cli-php5.3/ext-active --enable-cli 
--disable-cgi --disable-fpm --disable-embed --without-apxs2]
   --version           [5.3.4-pl0-gentoo]
   --vernum            [50304]

 e php configurato come segue

beh un grazie particolare per l impegno!!!
cmq ho risolto con la funzione createCDATASection, cosi il cdata me lo
scrive lui e non ho piu problemi di escaping


estigranqaatsi
dice:
Se dicevi che lato flash potevi leggere il CDATA non ci perdevamo sto 
tempo ...
Vabbň, se hai risolto bene cosě
Marco

 Marco
no non potevo leggere il cdata, ho solo visto che il problema era che
il CDATA scritto nell XML iniziava con &lt;![CDATA etc etc quindi
qualsiasi cosa che andava a leggere l xml non capiva che li c'era un
cdata.
cmq ti ringrazio per l aiuto e ti chiedo scusa dato che sono ancora
inesperto se ti ho fatto perdere la pazienza!!