Avatar billede unknown_someone Juniormester
22. maj 2003 - 11:51 Der er 5 kommentarer og
1 løsning

opret - ret - slet i xml

Er der nogle der har link til - eller endnu bedre har kode til - hvordan man i fx asp kan oprette, rette og slette poster i et xml-dokument?
Avatar billede mortenkjeldberg Nybegynder
22. maj 2003 - 12:09 #1
set objXml = Server.CreateObject("Microsoft.XMLDOM")
  objXML.async = False
  objXML.Load(Server.MapPath("../db/messageboard.xml"))
 
  if objXML.parseError.errorCode <> 0 Then
      Response.Write objXML.parseError.reason
  End If

 
  Select Case Request.Form("opg")
      Case "first"
        Set message = objXML.createElement("message")
     
        message.appendChild objXML.createElement("author")
        message.appendChild objXML.createElement("email")
        message.appendChild objXML.createElement("subject")
        message.appendChild objXML.createElement("date")
        message.appendChild objXML.createElement("text")
        message.appendChild objXML.createElement("replies")

        If objXML.documentelement.hasChildNodes Then
            newID = (CInt(objXML.documentelement.lastChild.getAttribute("id")) + 1)
        Else
            newID = 1
        End If
     
        message.setAttribute("id") = newID
        message.childNodes(0).text = Request.Form("name")
        message.childNodes(1).text = Request.Form("email")
        message.childNodes(2).text = Request.Form("subject")
        message.childNodes(3).text = now()
        message.childNodes(4).text = Request.Form("message")     
        objXML.documentElement.appendChild message.cloneNode(true)
        worked = 1 
 
      Case "reply"
        Set messageList = objXML.getElementsByTagName("message")
        For i = 0 to (messageList.length - 1 )
            If (messageList.item(i).getAttribute("id") = Request.Form("id")) Then
              Set message = messageList.item(i)
            End If
        Next   
       
        If message.childNodes(5).hasChildNodes Then
            Set tmpList = message.childNodes(5).childNodes
            newId = Request.Form("id") & ":" & CStr((tmpList.length + 1))
        Else
            newId = Request.Form("id") & ":1"
        End If

        Set reply = objXML.createElement("message")

        reply.appendChild objXML.createElement("author")
        reply.appendChild objXML.createElement("email")
        reply.appendChild objXML.createElement("subject")
        reply.appendChild objXML.createElement("date")
        reply.appendChild objXML.createElement("text")
        reply.appendChild objXML.createElement("replies")

        reply.setAttribute("id") = newID
        reply.childNodes(0).text = Request.Form("name")
        reply.childNodes(1).text = Request.Form("email")
        reply.childNodes(2).text = Request.Form("subject")
        reply.childNodes(3).text = now()
        reply.childNodes(4).text = Request.Form("message")     
        message.childNodes(5).appendChild reply.cloneNode(true)
        worked = 1
  End Select

  objXML.Save(Server.MapPath("../db/messageboard.xml"))'
  Set objXML = Nothing
 
  If Request.Form("lang")="dk" Then
      Response.Write "<center><br>Din besked er oprettet <br>Tak !" & _
                    "<br><a Href=" & ASPHostPath & "/messageboard/onesubjectdk.asp?id=" & newId & _
                    ">Tilbage til aktuel besked</A><br><br><br><br><br><br><br><br><br><br><br>"
                   
  Else
      Response.Write "<center><br>Your message has been submitted<br>Thank you !" & _
                    "<A Href=" & ASPHostPath & "/messageboard/onesubject.asp?id=" & newId & _
                    ">Back to subject</A><br><br><br><br><br><br><br><br><br><br><br>"
  End If

/Morten
Avatar billede mortenkjeldberg Nybegynder
22. maj 2003 - 12:10 #2
Det er lidt rodet men det virker :-)
Avatar billede unknown_someone Juniormester
22. maj 2003 - 12:21 #3
det er selve opret-delen... right? hvad med ret og slet?

mht ret ligger der vel to ting i det - både ret i et eksisterende element men også tilføjelse af et nyt element i samtlige de foregående poster.
Avatar billede mortenkjeldberg Nybegynder
22. maj 2003 - 21:31 #4
Slet-delen (jvf. ovennævnte create):

d = document.getElementById("message");

d_nested = document.getElementById("author");

throwaway_node = d.removeChild(d_nested);

Og ret-delen er vel bare ligesom i mit første svar hvor værdier først tildeles efter at noder er oprettet :

reply.setAttribute("id") = newID
        reply.childNodes(0).text = Request.Form("name")
        reply.childNodes(1).text = Request.Form("email")
        reply.childNodes(2).text = Request.Form("subject")
        reply.childNodes(3).text = now()
        reply.childNodes(4).text = Request.Form("message")     

/Morten
Avatar billede mortenkjeldberg Nybegynder
26. maj 2003 - 16:16 #5
Kan du bruge det ?
Avatar billede unknown_someone Juniormester
13. juni 2003 - 19:37 #6
ser godt ud - har endnu ikke prøvet det hele af, men starter godt... spm lukkes og tak for hjælpen
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