Visualizzazione dei risultati da 1 a 4 su 4

Discussione: Array per novizio

  1. #1

    Array e parsing xml per novizio

    Ciao a tutti, sono un novizio del Javascript e per lavoro sono costretto a dovermici avvicinare e scrivere qualche riga di codice.

    Il mio problema è che sto cercando di effettuare un parsing di un xml in corrispondenza di diversi nodi e concatenare i risultati all'interno di un'unica URL.
    Il problema che mi ritrovo ad affrontare è proprio quello di mettere i valori letti dal parsing in un unico momento (cliccando un pulsante e richiamando la funzione ModifyData()) e tutti assieme in una URL.
    Ad esempio questo è il codice che mi consente di estrarre un valore da inserire nella URL:



    Function ModifyData(){
    root = document.childNodes[0];
    body = root.getElementsByTagName("BODY")[0];
    xml = body.getElementsByTagName("XML")[0];
    bics = xml.childNodes[0];
    for(var j=0; j<bics.childNodes.length;j++){
    if(bics.childNodes[j].nodeName=='VARIABLES'){
    for(var x=0; x<bics.childNodes[j].childNodes.length; x++){
    if(bics.childNodes[j].childNodes[x].getAttribute("name")=='ESERCIZI'){
    var customer = bics.childNodes[j].childNodes[x].childNodes[0].childNodes[0].firstChild.getAttribute("name");
    window.open("http://****************/OpenDocument/opendoc/openDocument.jsp?iDocID=AUKdFlQDR19OjxTk79JTU0M&sI DType=CUID&sOutputFormat=P&lsSESERCIZIO_BO="+custo mer);
    }
    }
    }
    }
    }


    Cliccando il pulsante della pagina web che richiama la modifydata() correttamente viene aperta una nuova finestra passando alla url il valore letto dal parsing.
    ora però debbo leggere altri valori nello stesso xml in corrispondenza di altri nodi e concatenarli nella medesima URL.
    Ho provato una cosa del genere ma senza successo (purtroppo questa elaborazione è svluppata attraverso tools di business intelligence di SAP senza la possibilità di verificare gli errori. O funziona o non funziona):


    var arr = new Array();
    var aree;
    var str;
    function area(str)
    {
    root = document.childNodes[0];//<HTML>
    body = root.getElementsByTagName("BODY")[0]; //<BODY>
    xml = body.getElementsByTagName("XML")[0]; //<XML>
    bics = xml.childNodes[0];
    vars = bics.getElementsByTagName("SELECTION_STATE")[0]; //<SELECTION_STATE>
    varl = vars.getElementsByTagName("SELECTION")[0]; //<SELECTION>
    cars = varl.getElementsByTagName("CHARACTERISTICS")[0]; //<CHARACTERISTICS>
    for ( i = 0; i <= cars.childNodes.length; i++ )
    {
    if(cars.childNodes[i].getAttribute("name")=='0WBS_ELEMT__ZAREA_TER'){
    for ( h = 0; h <= cars.childNodes[i].childNodes.length; h++ )
    {

    for ( j = 0; j <= cars.childNodes[i].childNodes[h].childNodes.length; j++)
    {
    arr[j] = cars.childNodes[i].childNodes[h].childNodes[j].firstChild.getAttribute("text");
    str = arr.concat(arr);
    }

    }

    }
    }

    }


    function esercizio(customer) {
    root = document.childNodes[0];
    body = root.getElementsByTagName("BODY")[0];
    xml = body.getElementsByTagName("XML")[0];
    bics = xml.childNodes[0];
    for(var j=0; j<bics.childNodes.length;j++){
    if(bics.childNodes[j].nodeName=='VARIABLES'){
    for(var x=0; x<bics.childNodes[j].childNodes.length; x++){
    if(bics.childNodes[j].childNodes[x].getAttribute("name")=='ESERCIZI'){
    var customer = bics.childNodes[j].childNodes[x].childNodes[0].childNodes[0].firstChild.getAttribute("name");
    }
    }
    }
    }
    }

    function ModifyData() {
    esercizio(customer);
    area(str);
    window.open("http://****************/OpenDocument/opendoc/openDocument.jsp?iDocID=AUKdFlQDR19OjxTk79JTU0M&sI DType=CUID&sOutputFormat=P&lsSESERCIZIO_BO="+custo mer+str);

    }

    In pratica chiedevo se era possibile passare i valori calcolati in funzioni diverse utilizzando una specie di dichiarazione globale delle variabili e degli array.
    Grazie mille a tutti.
    Andrea

  2. #2
    Credo di essermi avvicinato all'obiettivo. Vorrei focalizzarmi sulla seconda parte del codice.
    Io scrivo in un array quello che il parsing mi restituisce leggendo tutti i nodi di un certo tipo tramite un ciclo for.
    Ora, se voglio richiamare fuori da quella funzione quell'array come posso fare?
    Il codice qui riportato funziona bene ma ritorna il primo valore che legge dall'xml, eventuali successivi vengono ignorati.

    function area()
    {
    root = document.childNodes[0];//<HTML>
    body = root.getElementsByTagName("BODY")[0]; //<BODY>
    xml = body.getElementsByTagName("XML")[0]; //<XML>
    bics = xml.childNodes[0];
    vars = bics.getElementsByTagName("SELECTION_STATE")[0]; //<SELECTION_STATE>
    varl = vars.getElementsByTagName("SELECTION")[0]; //<SELECTION>
    cars = varl.getElementsByTagName("CHARACTERISTICS")[0]; //<CHARACTERISTICS>
    for ( i = 0; i <= cars.childNodes.length; i++ )
    {
    if(cars.childNodes[i].getAttribute("name")=='0WBS_ELEMT__ZAREA_TER'){
    for ( h = 0; h <= cars.childNodes[i].childNodes.length; h++ )
    {

    for ( j = 0; j <= cars.childNodes[i].childNodes[h].childNodes.length; j++)
    {
    arr[j] = cars.childNodes[i].childNodes[h].childNodes[j].firstChild.getAttribute("text");
    str = arr.join(";");
    return str;
    }

    }

    }
    }

    }

    function ModifyData() {
    area();
    document.write(str);
    }


    Qualcuno ha qualche idea in proposito?

  3. #3
    Credo di essermi avvicinato all'obiettivo. Vorrei focalizzarmi sulla seconda parte del codice.
    Io scrivo in un array quello che il parsing mi restituisce leggendo tutti i nodi di un certo tipo tramite un ciclo for.
    Ora, se voglio richiamare fuori da quella funzione quell'array come posso fare?
    Il codice qui riportato funziona bene ma ritorna il primo valore che legge dall'xml, eventuali successivi vengono ignorati.

    function area()
    {
    root = document.childNodes[0];//<HTML>
    body = root.getElementsByTagName("BODY")[0]; //<BODY>
    xml = body.getElementsByTagName("XML")[0]; //<XML>
    bics = xml.childNodes[0];
    vars = bics.getElementsByTagName("SELECTION_STATE")[0]; //<SELECTION_STATE>
    varl = vars.getElementsByTagName("SELECTION")[0]; //<SELECTION>
    cars = varl.getElementsByTagName("CHARACTERISTICS")[0]; //<CHARACTERISTICS>
    for ( i = 0; i <= cars.childNodes.length; i++ )
    {
    if(cars.childNodes[i].getAttribute("name")=='0WBS_ELEMT__ZAREA_TER'){
    for ( h = 0; h <= cars.childNodes[i].childNodes.length; h++ )
    {

    for ( j = 0; j <= cars.childNodes[i].childNodes[h].childNodes.length; j++)
    {
    arr[j] = cars.childNodes[i].childNodes[h].childNodes[j].firstChild.getAttribute("text");
    str = arr.join(";");
    return str;
    }

    }

    }
    }

    }

    function ModifyData() {
    area();
    document.write(str);
    }


    Qualcuno ha qualche idea in proposito?
    Grazie mille.

  4. #4
    Credo di essermi avvicinato all'obiettivo. Vorrei focalizzarmi sulla seconda parte del codice.
    Io scrivo in un array quello che il parsing mi restituisce leggendo tutti i nodi di un certo tipo tramite un ciclo for.
    Ora, se voglio richiamare fuori da quella funzione quell'array come posso fare?
    Il codice qui riportato funziona bene ma ritorna il primo valore che legge dall'xml, eventuali successivi vengono ignorati.

    function area()
    {
    root = document.childNodes[0];//<HTML>
    body = root.getElementsByTagName("BODY")[0]; //<BODY>
    xml = body.getElementsByTagName("XML")[0]; //<XML>
    bics = xml.childNodes[0];
    vars = bics.getElementsByTagName("SELECTION_STATE")[0]; //<SELECTION_STATE>
    varl = vars.getElementsByTagName("SELECTION")[0]; //<SELECTION>
    cars = varl.getElementsByTagName("CHARACTERISTICS")[0]; //<CHARACTERISTICS>
    for ( i = 0; i <= cars.childNodes.length; i++ )
    {
    if(cars.childNodes[i].getAttribute("name")=='0WBS_ELEMT__ZAREA_TER'){
    for ( h = 0; h <= cars.childNodes[i].childNodes.length; h++ )
    {

    for ( j = 0; j <= cars.childNodes[i].childNodes[h].childNodes.length; j++)
    {
    arr[j] = cars.childNodes[i].childNodes[h].childNodes[j].firstChild.getAttribute("text");
    str = arr.join(";");
    return str;
    }

    }

    }
    }

    }

    function ModifyData() {
    area();
    document.write(str);
    }


    Qualcuno ha qualche idea in proposito?
    Grazie mille.

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.