[ markoval @ 04.09.2005. 20:00 ] @
Imam jedan problemcic, a ne bih da izmisljam toplu vodu (da pisem string parser)...

imam neki xml fajl:
<?xml version='1.0' encoding='ISO-8859-1'?>
<client>
<NOM>TRIEPEL</NOM>
<ADRESSE1>RUE DU 1ER CUIRASSIERS</ADRESSE1>
<ADRESSE2></ADRESSE2>
<CD_VILLE>68000</CD_VILLE>
<VILLE>COLMAR</VILLE>
<TEL_CLIENT>03 89 41 91 46</TEL_CLIENT>
<TELEFAX></TELEFAX>
<REMIMPORTA></REMIMPORTA>
<CODE_CLIEN>41200100</CODE_CLIEN>
<NOMPREN>TRIEPEL RICHARD</NOMPREN>
<NOMMARQUE>Chevalier</NOMMARQUE>
<NOMVIN>TRIEPEL</NOMVIN>
<CUVERESERV></CUVERESERV>
<CUVEE_NOM></CUVEE_NOM>
<MR>Monsieur</MR>
<COMMENTAIR> NPAI TRAITE LE 10.02.00 CORRECT</COMMENTAIR>
<NOMRELANCE>N</NOMRELANCE>
<CUNOM1></CUNOM1>
<PAYS>FRANCE</PAYS>
<FLAMANT></FLAMANT>
<PRENOM>RICHARD</PRENOM>
<CUVEE3LIG>68000COLMARTRIEPELRUEDUERCUIRA</CUVEE3LIG>
<CODAPART>0</CODAPART>
<PRENOMBEBE></PRENOMBEBE>
<DATENAISSA></DATENAISSA>
<REP></REP>
<ADRESSE3></ADRESSE3>
<N_RUE>39 A</N_RUE>
<DUNS></DUNS>
<SCRL>FACT</SCRL>
<CODE></CODE>
<FAXOK></FAXOK>
<DEBLOC>0</DEBLOC>
<IDFAX></IDFAX>
<FAX></FAX>
<TOP1></TOP1>
<NBCOM>1</NBCOM>
<CHIFAF>805.14</CHIFAF>
<ADRESSE1_0>RUE DU 1ER CUIRASSIERS</ADRESSE1_0>
<DATEDERC>9/11/1996</DATEDERC>
</client>


JS mi izgleda ovako:
function XMLDoc(url) {
if (window.ActiveXObject) {
xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
xmlDoc.async=false;
xmlDoc.load(url);
getmessage()
}
else if (document.implementation && document.implementation.createDocument) {
xmlDoc= document.implementation.createDocument("","",null);
xmlDoc.load(url);
xmlDoc.onload=getmessage
} else {
alert('Your browser cannot handle this script');
}
}

function getmessage() {
document.getElementById("MR.vdmcli").value=xmlDoc.getElementsByTagName("MR")[0].firstChild.nodeValue
document.getElementById("prenom.vdmcli").value=xmlDoc.getElementsByTagName("PRENOM")[0].firstChild.nodeValue
document.getElementById("NOM.vdmcli").value=xmlDoc.getElementsByTagName("NOM")[0].firstChild.nodeValue
document.getElementById("N_RUE.vdmcli").value=xmlDoc.getElementsByTagName("N_RUE")[0].firstChild.nodeValue
document.getElementById("ADRESSE1.vdmcli").value=xmlDoc.getElementsByTagName("ADRESSE1")[0].firstChild.nodeValue
document.getElementById("ADRESSE2.vdmcli").value=xmlDoc.getElementsByTagName("ADRESSE2")[0].firstChild.nodeValue
document.getElementById("ADRESSE3.vdmcli").value=xmlDoc.getElementsByTagName("ADRESSE3")[0].firstChild.nodeValue
document.getElementById("CD_VILLE.vdmcli").value=xmlDoc.getElementsByTagName("CD_VILLE")[0].firstChild.nodeValue
document.getElementById("VILLE.vdmcli").value=xmlDoc.getElementsByTagName("VILLE")[0].firstChild.nodeValue
document.getElementById("PAYS.vdmcli").value=xmlDoc.getElementsByTagName("PAYS")[0].firstChild.nodeValue
}


Sve to radi besprekorno, samo sto moram da smanjim kolicinu rucnog rada jer cu ceo zivot da provedem pisuci document.blabla = xmlDoc.blabla

Kako da napravim petlju koja ce da upise npr
document.getElementById(XML element name).value = vrednost XML elemnta
[ noviKorisnik @ 04.09.2005. 22:10 ] @
Zar je toliko teško?
Code:
function getmessage4el(elID) {
  document.getElementById (elID + ".vdmcli").value = xmlDoc.getElementsByTagName (elID) [0].firstChild.nodeValue;
}
var els = new Array ("MR", "prenom", ...);
for (var i = 0; i < els.length; i++)
{
  getmessage4el (els [i]);
}
[ markoval @ 04.09.2005. 22:55 ] @
Hvala... nije mi palo na pamet da pravim array sa elementima koji me zanimaju.. trazio sam kako da prodjem kroz sve elemente (nesto kao vbs-on for each), ali ovo mi jos vise odgovara...

btw... ne rece ti meni kako to ide sa JS-om i pokretanjem lokalnih aplikacija... znam security, ali to se valjda sve podesi da moze da dopusta - moram nesto da smislim u narednih mesec dana za to...
[ noviKorisnik @ 05.09.2005. 08:40 ] @
Neću da mešam babe i žabe, kreatori browsera se trude na sve načine da browsere načine sigurnijim spravama, u prvom redu je to potpuno odvajanje od klijentovog fajl sistema. Tako da ni ne znam šta sve treba učiniti za svaki browser pojedinačno da bi se dozvolilo ovakvo nešto (ni ne interesuje me, ako neko baš zapne i traži da se takvo nešto realizuje, možemo da popričamo i vidimo čiji su argumenti jači).

Inače, što se tiče teme... ovo s nizom ako ti trebaju samo neki elementi iz onog dokumenta, inače može i lepše i lakše (možda malo više koda, ali mi deluje glupavo navođenje elemenata niza, a ovde toga nema).

Code:
function getmessage ()
{
  var walker = xmlDoc.getElementsByTagName ('client') [0].firstChild;
  while (walker != null)
  {
     if (walker.nodeType == 1)
    {
      document.getElementById (walker.nodeName + '.vdmcli').value = walker.firstChild.nodeValue;
    }
    walker = walker.nextSibling;
  }
}