Avatar billede bajerfar Nybegynder
22. maj 2006 - 12:45 Der er 9 kommentarer og
1 løsning

Loop XML med javascript

Hej Eksperter
Jeg er langt fra stærk i XML, så jeg håber I forstår mit spørgsmål:
Jeg har med javascript brug for, at loop'e gennem en xml-fil. Hvis et udtræk, beliggende ét niveau nede, er lig med FALSE, skal en anden værdi i samme niveau udskrives.

<->
  <værdi>false</værdi>
  <xxx>UDSKRIV</xxx>
  <-></->
<->
<->
  <værdi>true</værdi>
  <xxx></xxx>
  <-></->
<->
<->
  <værdi>true</værdi>
  <xxx></xxx>
  <-></->
<->
Avatar billede nico26 Nybegynder
22. maj 2006 - 21:50 #1
hej

prøv noget lignende det her (jeg har ikke testet det)

xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
xmlDoc.async="false";
xmlDoc.load("note.xml");

root = xmlDoc.documentElement;

for (i=0; i<root.childNodes.length; i++) {
  e = root.childNodes.item(i);
  if (e.getElementsById("værdi")[0].text == "false")
    udskriv(e.getElementsById("xxx")[0].text);
}
Avatar billede tdafoobar Nybegynder
22. maj 2006 - 21:58 #2
Bemærk dog at ActiveX kun er til Internet Explorer. For at optimere til andre firefox/gecko/(opera?) skal der bruges XMLHttpRequest();

Skriv en lille browser checker og vælg det rigtige object, ellers er nico26's metode fin fin.
Avatar billede olebole Juniormester
22. maj 2006 - 22:27 #3
<ole>

tdafoobar >> bemærk, der ikke er nogen, der har brugt ActiveX-kontroller af typen XMLHttp. Derfor er det ikke XMLHttpRequest, der skal bruges i FF  :)

/mvh
</bole>
Avatar billede olebole Juniormester
22. maj 2006 - 22:29 #4
- i stedet kan du f.eks. bruge: document.implementation.createDocument()
Avatar billede tdafoobar Nybegynder
22. maj 2006 - 22:30 #5
olebole, nej men XMLHttpRequest kan bruges til at loade xml data ind med. Eneste løsning jeg har fundet indtil videre som kunne loade direkte fra en fil ;)
Avatar billede olebole Juniormester
23. maj 2006 - 04:40 #6
function getXml(sUrl) {
    var xmlDoc = null;
    if (document.implementation && document.implementation.createDocument) {
        xmlDoc = document.implementation.createDocument("", "", null);
        xmlDoc.onload = function() {
            callBack(xmlDoc);
        };
    } else {
        xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
        xmlDoc.onreadystatechange = function () {
            if (xmlDoc.readyState==4) callBack(xmlDoc);
        };
    }
    xmlDoc.load(sUrl);
}

Derudover skal du bruge en funktion 'callBack' - der får XML-dokumentet medsendt som argument. Deri traverserer du gennem elementerne, som vanligt  ;o)
Avatar billede olebole Juniormester
23. maj 2006 - 04:42 #7
- og der bør naturligvis også være en 'fælde', der - hvis browseren heller ikke forstår ActiveX - gør noget alternativt (smider en alert ... or whatever)
Avatar billede bajerfar Nybegynder
31. maj 2006 - 15:04 #8
Undskyld mit meget sene svar.
Jeg brugte nico26 forslag. Det virker fint .. læg et svar.

Tak for hjælpen, drenge!
Avatar billede nico26 Nybegynder
31. maj 2006 - 18:25 #9
:)
Avatar billede bajerfar Nybegynder
01. juni 2006 - 09:17 #10
Værsgo'!
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester



IT-JOB

Netcompany A/S

Managing Architect

Cognizant Technology Solutions Denmark ApS

Service Line Specialist - ServiceNow (Thirdera)

Udviklings- og Forenklingsstyrelsen

UI-designer med flair for apps