Avatar billede simonadrian Nybegynder
25. januar 2008 - 10:54 Der er 8 kommentarer og
1 løsning

vb-script fungerer ikke

Jeg forsøger forgæves at afprøve nogle xml dom scripts fra devguru, hvor der trods direkte afkopiering intet sker. Hvor går det galt. Begår jeg en elementær fejl. Eksempelvis dette eksempel:

names2.xml:
<?xml version="1.0" encoding="utf-8"?>
<names>
  <name>Alice</name>
  <name>Bert</name>
  <name>Charlie</name>
  <name>Diane</name>
  <name>Eric</name>
</names>


names2.asp:
<%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%>
<%
Set objXMLDoc = CreateObject("Microsoft.XMLDOM")
objXMLDoc.async = False
objXMLDoc.load("names2.xml")

Set objRoot = objXMLDoc.documentElement
Set objExNode = objRoot.removeChild(objRoot.childNodes.item(2))
objRoot.appendChild(objExNode)

Set objNodeList = objXMLDoc.getElementsByTagName("name")
For Each elem in objNodeList
  document.write(elem.firstChild.nodeValue & "<br>")
Next
%>
Det skulle give følgende output

Alice
Bert
Diane
Eric
Charlie

men jeg får kun denne fejl:
Microsoft VBScript runtime error '800a01a8'

Object required: 'objRoot'

/names2.asp, line 8
Avatar billede erikjacobsen Ekspert
25. januar 2008 - 11:07 #1
Det kan komme fordi den ikke kan finde filen. Skriv den fulde sti til filen - og overvej om du mener document.write ;)
Avatar billede erikjacobsen Ekspert
25. januar 2008 - 11:08 #2
Ja, altså: 

  objXMLDoc.load(server.mappath("names2.xml"))
Avatar billede simonadrian Nybegynder
25. januar 2008 - 13:00 #3
Jeg har måske også misforstået hele konceptet. Min hensigt var at ændre i xml-filen.
Men med følgende kode

<script type="text/vbscript">
Set objXMLDoc = CreateObject("Microsoft.XMLDOM")
objXMLDoc.async = False
objXMLDoc.load("names2.xml")

Set objRoot = objXMLDoc.documentElement
Set objExNode = objRoot.removeChild(objRoot.childNodes.item(2))
objRoot.appendChild(objExNode)

Set objNodeList = objXMLDoc.getElementsByTagName("name")
For Each elem in objNodeList
document.write(elem.firstChild.nodeValue & "<br>")
Next
</script>

så lykkes det mig at få det angivede output, men xml-filen har ikke ændret sig og det var sådan set formålet.
Avatar billede erikjacobsen Ekspert
25. januar 2008 - 13:03 #4
Du ændrer kun noget i den kopi, der er læst ind, med mindre du gemmer det igen som fil, fx.

objXMLDoc.Save("names3.xml")
Avatar billede simonadrian Nybegynder
25. januar 2008 - 13:18 #5
Jeg skulle jo helst gemme den som samme fil.
Kan du indplacere det i scriptet.
Avatar billede erikjacobsen Ekspert
25. januar 2008 - 13:22 #6
Så må du kalde filerne det samme - men det er da en god idé at starte med at lægge det på en ny fil, så man ikke ødelægger den gamle. Det lader til du afvikler det i en browser - det har jeg ingen erfaringer med.
Avatar billede simonadrian Nybegynder
02. april 2008 - 23:34 #7
Send mig et svar, så jegh kan sende nogen point
Avatar billede erikjacobsen Ekspert
02. april 2008 - 23:45 #8
Ingen point til mig, tak.
Avatar billede simonadrian Nybegynder
02. juli 2008 - 16:02 #9
Lukker spørgsmålet
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