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