• User Attivo

    formattare testo preso da xml

    salve, ho un problema di cui non vengo a capo.
    prevelevo dei testi da un file xml e li faccio apparire in un campo di testo dinamico in flash, che è settato come testo hrml.
    come devo scrivere l'xml perchè flash legga i tag della formattazione?
    adesso il mio xml è:

    
    <?xml version="1.0" encoding="utf-8"?>
    <notizie>
    <registro 
    titolo = "Se si smarrisce la carta di credito..."
    imagen = "imnews/cc.jpg"
    testo = "Integer sagittis euismod.Etiam lorem, nibh eros, dignissim phasellus.Lorem ipsum 
    dolor sit amet, egestas leo imperdiet. Pharetra vestibulum quisque, aenean phasellus, urna 
    sapien enim.Pellentesque in mi, luctus tristique. In dolor rutrum, luctus turpis id, 
    adipiscing imperdiet."/>
    <registro 
    titolo = "Se si smarriscono i documenti"
    imagen = "imnews/pat.jpg"
    testo = "Pellentesque in mi, luctus tristique. In dolor rutrum, luctus turpis id, adipiscing 
    imperdiet."/>
    <registro 
    titolo = "Suggerimento numero 3"
    imagen = "imnews/img3.jpg"
    testo = "Lorem ipsum dolor sit amet, egestas leo imperdiet. Pharetra vestibulum quisque, 
    aenean phasellus, urna sapien enim."/>
    </notizie>
    
    

    ma se inserisco un qualunque tag html nel flash mi appare undefined
    qualcuno sa darmi una mano? di xml capisco poco o niente... grazie


  • Super User

    Ciao claire,
    per utilizzare i tags HTML all'interno di un file XML ti consiglio di usare il CDATA.

    Mi spiego:
    Partiamo da un semplice xml:

    
    [LEFT]<?xml version='1.0' encoding='iso-8859-1'?>
    <testo>
     <item><![CDATA]></item>
    </testo>[/LEFT]
    
    

    Con actionscript per recuperare il colore del font:

    
    [LEFT]mioXML.onLoad = function () {
       trace(this.firstChild.firstChild.firstChild.nodeValue)
    }[/LEFT]
    
    

    In questo modo hai un output così:
    "<font color='#ff0000'>mio testo</font>"
    che puoi passare al tuo campo di testo
    🙂


  • User Attivo

    mmm, più o meno ho capito, solo non so come modificare l'xml che ho fatto ora.
    mi spiego, ho 2 campi di testo in flash, uno per il titolo e uno per il testo, e un mc in cui carico l'immagine, avevo provato il cd data cercando su internet, ma in qualunque modo cerco di cambiare l'xml, flash non me lo riconosce più.
    al momento in flash carico l'xml così:

    
    loadNew = function (xmlObj, indice) {
     this = xmlObj;
      if (!indice) {
      var i = 0;
     } else {
      var i = indice;
     }
     
     recordSet.text = Number(actualRecord+1)+"/"+Number(totalRecords+1);
      if (Number(actualRecord+1) == Number(totalRecords+1)) {
      nextButton_btn.enabled = false;
      nextButton_btn.useHandCursor = false;
      nextButton_btn._alpha = 50;
     } else {
      nextButton_btn.enabled = true;
      nextButton_btn.useHandCursor = true;
      nextButton_btn._alpha = 100;
     }
      if (Number(actualRecord+1) == 1) {
      prevButton_btn.enabled = false;
      prevButton_btn.useHandCursor = false;
      prevButton_btn._alpha = 50;
     } else {
      prevButton_btn.enabled = true;
      prevButton_btn.useHandCursor = true;
      prevButton_btn._alpha = 100;
     }
      item.titolo.text = this.firstChild.childNodes*.attributes.titolo;
     item.testo.htmlText = this.firstChild.childNodes*.attributes.testo;
     
     item.holder.loadMovie(this.firstChild.childNodes*.attributes.imagen);
    };
     
    novitàXML = new XML();
    novitàXML.ignoreWhite = true;
    novitàXML.onLoad = function(succes) {
     if (succes) {
        item = attachMovie("notizie_mc", "novi", this.getNextHighestDepth(), {_x:0, _y:0});
       actualRecord = 0;
      totalRecords = this.firstChild.childNodes.length-1;
      recordSet.text = Number(actualRecord+1)+"/"+Number(totalRecords+1);
     
      prevButton_btn.enabled = false;
      prevButton_btn.useHandCursor = false;
      prevButton_btn._alpha = 50;
     
      loadNew(novitàXML);
     } else {
      trace("File not loaded");
     }
     
     nextButton_btn.onRollOver = function() {
      this.gotoAndPlay(2);
     };
     nextButton_btn.onRollOut = function() {
      this.gotoAndPlay(8);
     };
     nextButton_btn.onRelease = function() {
      if (actualRecord<totalRecords) {
       actualRecord += 1;
       loadNew(novitàXML, actualRecord);
      }
      novi.carim();
     };
     // --
     prevButton_btn.onRollOver = function() {
      this.gotoAndPlay(2);
     };
     prevButton_btn.onRollOut = function() {
      this.gotoAndPlay(8);
     };
     prevButton_btn.onRelease = function() {
      novi.carim();
      if (actualRecord>0) {
       actualRecord -= 1;
       loadNew(novedadesXML, actualRecord);
      }
     };
    };
     
    novitàXML.load("news.xml");
    
    

    suggerimenti?


  • Super User

    Per utilizzare il CDATA devi fare esattamente come il mio esempio, lopuoi utilizzare in ogni nodo del tuo xml.

    Quando con Flash recuperi i nodi xml dove utilizzi il CDATA, devi sempre usare il nodeValue altrimenti non hai un corretto output.


  • User Attivo

    ora ci riprovo.. speriamo bene.. ma tieni d'occhio questa discussione perchè temo che tornerò 🙂