20. juni 2006 - 13:55 Der er 2 kommentarer og
1 løsning

Opdatér XML til eksisterende XML

Hejsa.
Jeg har en eksisterende xml somskal opdateres med noget xml som kommer fra ekstern http GET.

Den eksisterende xml ser således ud:
<?xml version="1.0" encoding="iso-8859-1"?>
<package>
    <message id"12" dato="23-12-2006">
    <mail>pp@bb.dk</mail>
    <subject></subject>
    </message>
    <message id"13">
    <mail>cd@bb.dk</mail>
    <subject></subject>
    </message>
</package>

Nu kommer der noget data ind. Det ser således ud:

    <message id"2345">
    <mail>pablo@escobar.dk</mail>
    <subject></subject>
    </message>

Denne stump skal ind i den eksisterende xml fil.

Hvordan gør man lige det nemmest i asp (MSXML) ? (ikke .NET !!).
20. juni 2006 - 15:23 #1
ok, har fundet ud af noget ign. det her...

function mMergeXML(tXML_DATA, tXML_FILEPATH, tXML_FILENAME)

    Set orgXML = Server.CreateObject("MSXML2.DOMDocument.4.0")
    orgXML.async = false
    orgXML.load(tXML_FILEPATH & "\" & tXML_FILENAME)
    Set OrgNode = orgXML.SelectSingleNode("./package")
   
    Set newXML = Server.CreateObject("MSXML2.DOMDocument.4.0")
    newXML.async = false
    newXML.loadXML(tXML_DATA)
    Set newNode = newXML.SelectSingleNode("./package")
   
   
    ' ** Check og se om ID eksisterer **
   
   
    for each tmpNode in newNode.childNodes
      OrgNode.appendChild(tmpNode)
    next
   
    Call orgXML.Save(tXML_FILEPATH & "\" & tXML_FILENAME)
   
    set newNode = nothing
    set newXML = nothing
    set OrgNode = nothing
    set orgXML = nothing

end function
20. juni 2006 - 15:34 #2
her med et check om ID eksisterer:


public function mMergeXML(tXML_DATA, tXML_FILEPATH, tXML_FILENAME)

    Set orgXML = Server.CreateObject("MSXML2.DOMDocument.4.0")
    orgXML.async = false
    orgXML.load(tXML_FILEPATH & "\" & tXML_FILENAME)
    Set OrgNode = orgXML.SelectSingleNode("./package")
   
    Set newXML = Server.CreateObject("MSXML2.DOMDocument.4.0")
    newXML.async = false
    newXML.loadXML(tXML_DATA)
    Set newNode = newXML.SelectSingleNode("./package")
   
   
    ' ** Check og se om ID eksisterer **
    on error resume next
    newID = newXML.SelectSingleNode("package/message/@id").text
    orgID = orgXML.SelectSingleNode("package/message[@id='"&newID&"']/@id").text
    response.write "orgID: " & orgID & vbcrlf
    response.write "newID: " & newID & vbcrlf
        if err.number <> 0 then         'response.write "err : " & err.description  & vbcrlf
          err.clear
          IsNothingNode = true
        else
          IsNothingNode = false
        end if
    on error goto 0

    if IsNothingNode = true then
        for each tmpNode in newNode.childNodes
          OrgNode.appendChild(tmpNode)
        next
      Call orgXML.Save(tXML_FILEPATH & "\" & tXML_FILENAME)
    else
    end if

    set newNode = nothing
    set newXML = nothing
    set OrgNode = nothing
    set orgXML = nothing

end function
20. juni 2006 - 15:34 #3
jeps
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

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