Visualizzazione dei risultati da 1 a 8 su 8

Discussione: ordinare array da XML

  1. #1
    Utente di HTML.it L'avatar di telegio
    Registrato dal
    Sep 2001
    Messaggi
    2,591

    ordinare array da XML

    Salve a tutti..
    sto cercando di capire come ordinare un array "importato" da un XML..
    ho provato con sort, e con sortOn ma non sembra esserci un effetto
    i nodi li carico così, ma non so davvero come ordinarli, per esempio, per titolo.. o per descrizione..
    codice:
    image1 = [];
    copertina = [];
    titolo = [];
    descrizione = [];
    anno = [];
    total = xmlNode.childNodes.length;
    for (i=0; i<total; i++) {
    titolo[i] = xmlNode.childNodes[i].childNodes[4].firstChild.nodeValue;
    copertina[i] = xmlNode.childNodes[i].childNodes[3].firstChild.nodeValue;
    image1[i] = xmlNode.childNodes[i].childNodes[2].firstChild.nodeValue;
    descrizione[i] = xmlNode.childNodes[i].childNodes[1].firstChild.nodeValue;
    contatore[i] = xmlNode.childNodes[i].childNodes[0].firstChild.nodeValue;
    anno[i] = xmlNode.childNodes[i].childNodes[5].firstChild.nodeValue;
    
    }
    // trace(xmlNode);
    xmlNode.sort("titolo");
    trace("AAAAAAAAA   A Aaaaa" + xmlNode);
    i due trace sono uguali..

    grazie in anticipo a chiunque voglia/possa aiutarmi..

  2. #2
    Utente di HTML.it L'avatar di telegio
    Registrato dal
    Sep 2001
    Messaggi
    2,591
    la uppo..
    se c'è un altro modo per importare dati in XML e ordinarli sono ben contento di cambiare metodo..

  3. #3
    posta il cod completo x la lettura e anche il file xml....magari con due o tre nodi solamente che appena ho un attimo faccio un test e ti dico.......xchè dovrebbe fungere con il metodo sort o sorton

    la verità non è una meretrice che si getta al collo di chi non la vuole ma anzi essa è dotata di una così altera bellezza che anche chi sacrifica tutto per ottenerla non è sicuro di averla raggiunta !

  4. #4
    Utente di HTML.it L'avatar di telegio
    Registrato dal
    Sep 2001
    Messaggi
    2,591
    intanto grazie..

    questo è il codice per il caricamento..
    Codice PHP:
    function loadXML(loaded) {

    if (
    loaded) {
    trace("caricato");
    xmlNode this.firstChild;
    contatore = [];
    image1 = [];
    image2 = [];
    image3 = [];
    image4 = [];
    copertina = [];
    titolo = [];
    descrizione = [];
    anno = [];
    total xmlNode.childNodes.length;
    for (
    i=0i<totali++) {
    titolo[i] = xmlNode.childNodes[i].childNodes[4].firstChild.nodeValue;
    copertina[i] = xmlNode.childNodes[i].childNodes[3].firstChild.nodeValue;
    image1[i] = xmlNode.childNodes[i].childNodes[2].firstChild.nodeValue;
    descrizione[i] = xmlNode.childNodes[i].childNodes[1].firstChild.nodeValue;
    contatore[i] = xmlNode.childNodes[i].childNodes[0].firstChild.nodeValue;
    anno[i] = xmlNode.childNodes[i].childNodes[5].firstChild.nodeValue;


    gotoAndStop(2);

    }
    trace(xmlNode);
    xmlNode.sort("titolo");
    trace("AAAAAAAAA   A Aaaaa" xmlNode);
    } else {
    trace ("niente");
    content "file not loaded!";

    il file XML è
    codice:
    <?xml version="1.0" encoding="UTF-8"?>
      <images>
     <pic>
        <contatore>3</contatore>
        <descrizione>Secondo lavorissssimo</descrizione>
        <image1>header.jpg</image1>
    	 <copertina>header.jpg</copertina>
    	 <titolo>questo il principale titolo</titolo>
    	 <anno>2010</anno>
      </pic>
      <pic>
        <contatore>3</contatore>
        <descrizione>terzo lavoro</descrizione>
        <image1>footer.jpg</image1>
    	 <copertina>footer.jpg</copertina>
    	 <titolo>misfatto del secondario titolo</titolo>
    	 <anno>2010</anno>
      </pic>
       <pic>
        <contatore>3</contatore>
        <descrizione>Primo lavoro</descrizione>
        <image1>under.jpg</image1>
    	 <copertina>footer.jpg</copertina>
    	 <titolo>ecco il terzo titolo</titolo>
    	 <anno>2009</anno>
      </pic>
    </images>
    se aggiungi nodi, devi cambiare il campo contatore che è l'unica "costante" che non cambia e che sarà un count dei record..
    poi magari quello lo toglierò dall'XML e lo metterò come variabile a parte.. se riuscirò a farlo..
    per ora grazie..

  5. #5
    Utente di HTML.it L'avatar di daryl74
    Registrato dal
    Jun 2001
    Messaggi
    125
    Ciao , visto che ho lo stesso problema (o comunque uno molto simile) ho fatto qualche ricerca.
    Ovviamente non è possibile ordinare direttamente l'XML o l'XMLList ma bisogna usare una funzione sugli array.
    A questo link (sort-xml-by-attribute-in-actionscript-3 ) è presente la funzione che incollo qui di seguito.
    Dai 1 occhiata perchè è spiegato molto bene (in inglese).

    Codice PHP:
    public static function sortXMLByAttribute
         
    (
            
    $xml        :    XML,
            
    $attribute    :    String,
            
    $options    :    Object    =    null,
            
    $copy        :    Boolean    =    false
        
    )
        :
    XML
     
    {
        
    //store in array to sort on
        
    var xmlArray:Array    = new Array();
        var 
    item:XML;
        for 
    each(item in $xml.children())
        {
            var 
    object:Object = {
                
    data    item
                
    order    item.attribute($attribute)
            };
            
    xmlArray.push(object);
        }

        
    //sort using the power of Array.sortOn()
        
    xmlArray.sortOn('order',$options);

        
    //create a new XMLList with sorted XML
        
    var sortedXmlList:XMLList = new XMLList();
        var 
    xmlObject:Object;
        for 
    each(xmlObject in xmlArray )
        {
            
    sortedXmlList += xmlObject.data;
        }
        
        if(
    $copy)
        {
            
    //don't modify original
            
    return    $xml.copy().setChildren(sortedXmlList);
        }
        else
        {
            
    //original modified
            
    return $xml.setChildren(sortedXmlList);
        }
     } 
    Io userò sicuramente questa funzione perchè risponde esattamente alle mie esigenze.

  6. #6
    Utente di HTML.it L'avatar di telegio
    Registrato dal
    Sep 2001
    Messaggi
    2,591
    intanto grazie..
    i miei dati vengono da PHP, quindi posso ordinarli inizialmente tramite la query come meglio credo.. però vorrei farli riordinare da dentro flash all'utente a seconda dell'esigenza..
    cioè in sintesi: non vorrei ogni volta che l'utente deve riordinare i dati che già ho negli array, fargli rifare la query..

  7. #7
    Utente di HTML.it L'avatar di daryl74
    Registrato dal
    Jun 2001
    Messaggi
    125
    Ho capito. In questo modo risolvi la seconda parte del problema:
    - hai l'ordinamento iniziale impostato sui dati provenienti da PHP.
    - per gli ordinamenti successivi usi questa funzione all'interno di flash applicata all'XML iniziale senza dover rieseguire la query su PHP.

    Saluti

    DaryL74

  8. #8
    Utente di HTML.it L'avatar di telegio
    Registrato dal
    Sep 2001
    Messaggi
    2,591
    scusa, lascia perdere, è il sole di agosto che ancora influenza tutto..

    comunque sto usando AS2.. non ho flash originale per usare AS3.. quindi nada..

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.