Hvordan gør jeg når jeg skal ændre f.eks altName? Er der en funktion til at ændre med? eller er den eneste måde at slette den helt, og så oprette den igen?
Ah, ja det der ser betydeligt mere simpelt ud end det jeg fandt om at slette og oprette osv, men hvor kan jeg sætte ind sådan så den kun gør det ved en bestemt? den xml jeg har har mange <user></user> skal jeg så først kigge igennem sådan så den finder hvor uuid og simName er rigtigt, og så sætte den til at ændre nodeValue der?
Nå, jeg kan se at der givetvis ikke er nogen af de foreslåede egenskaber som kan bruges (innerText og text), så det kan evt. være fordi der opereres direkte på resultatet af selectSingleNode, at problemet opstår (selvom det burde fungere, hvis altName ikke indeholder andet end tekst). Alternativt må du oprette en textnode og udskifte den eksisterende childnode på altName med den nye. Noget i stil med:
set xn = xd.documentElement.selectSingleNode("/namelist/user/alias[uuid='" & aviID & "' and simName='" & simID & "']/altName") xn.replaceChild xd.createTextNode(name), xn.firstChild
Du kan evt. teste om der findes noget i kaldet til selectSingelNode, ved at undersøge om xn er nothing. Hvis den er nothing findes der naturligvis ikke noget :-)
set xn = xd.documentElement.selectSingleNode("/namelist/user/alias[uuid='" & aviID & "' and simName='" & simID & "']/altName") if not xn is nothing then xn.replaceChild xd.createTextNode(name), xn.firstChild else response.write "brugeren kunne ikke findes." end if
Fantastisk, det var endda svaret på noget jeg regnede med at jeg skulle bikse med senere, fordi hvis den ikke findes, så skal den oprettes. Så det er perfekt til det jeg skulle lave senere.
Men her er resultatet fra det:
brugeren blev fundet. Debug: dce83176-7214-4649-b284-ba344b71799b / FurNation Purgatory / test
strFileName = "data_names.xml"
filnavn_paa_xmldoc = Server.MapPath(strFileName) set xd = Server.CreateObject("MSXML2.DOMDocument") xd.Load filnavn_paa_xmldoc
set xn = xd.documentElement.selectSingleNode("/namelist/user/alias[uuid='" & aviID & "' and simName='" & simID & "']/altName") if not xn is nothing then response.write "brugeren blev fundet." xn.replaceChild xd.createTextNode(name), xn.firstChild else response.write "brugeren kunne ikke findes." end if
Så det må være xn.replaceChild xd.createTextNode(name), xn.firstChild den ikke gør rigtigt? Kan bare intet finde om den på google, ellers leder jeg efter noget forkert?
Hvis man antager at altName kan være tom (dvs. ikke have nogen efterkommere), så kunne du måske få mere succes med at tjekke om firstChild findes inden du forsøger at udskifte den. Jeg forestiller mig noget i stil med:
if not xn is nothing then response.write "brugeren blev fundet." if not xn.firstChild is nothing then xn.replaceChild xd.createTextNode(name), xn.firstChild else xn.appendChild xd.createTextNode(name) end if else response.write "brugeren kunne ikke findes." end if
Hvordan aflæser du om værdien er blevet ændret? Hvis du læser i XML-filen, så skal du i det mindste huske at kalde xd.Save(filnavn) for at gemme oveni den eksisterende XML-fil...
Hvis nogle skulle falde over dette emne igen senere, så blev det færdige funktionelle resultat dette:
filnavn = "data_names.xml"
filnavn_paa_xmldoc = (Server.MapPath(filnavn)) set xd = Server.CreateObject("MSXML2.DOMDocument") xd.Load filnavn_paa_xmldoc
set xn = xd.documentElement.selectSingleNode("/namelist/user/alias[uuid='" & aviID & "' and simName='" & simID & "']/altName") if not xn is nothing then if not xn.firstChild is nothing then xn.replaceChild xd.createTextNode(name), xn.firstChild else xn.appendChild xd.createTextNode(name) end if else response.write "brugeren kunne ikke findes." end if
Tak for svar da :-D Som endda hjalp på flere funktioner på samme tid... Næste jeg så skal til at finde ud af er hvordan man sletter ting hehehehe, men tror lige jeg starter på den msdn side.
Synes godt om
Ny brugerNybegynder
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.