Avatar billede madssch Nybegynder
15. maj 2006 - 12:57 Der er 3 kommentarer og
2 løsninger

Fejl ved brug af Microsoft.MSXML

Hej Eksperter!

Jeg har en ASP-funktion, som åbner en XML-fil og læser data.

Min funktion går desværre i stå, hvis denne linje findes i XML-filen:

<copyright>© 2006 Company.</copyright>

Fjernes denne linje fra XML-filen, udlæses alle data korrekt.

Problemet ligger naturligvis i ©-symbolet - men hvordan løser jeg problemet?

ASP-koden:

Set objXML = Server.CreateObject("Microsoft.XMLDOM")
Set objLst = Server.CreateObject("Microsoft.XMLDOM")

    objXML.async = False
    objXML.Load (Server.MapPath("rss.xml"))
   
    Set objLst = objXML.getElementsByTagName("*")
   
    For i = 0 To (objLst.length - 1)
   
        If objLst.item(i).nodeName = "title" Then
           
            strTitle = strTitle & objLst.item(i).text & "(&)"
           
        ElseIf objLst.item(i).nodeName = "link" Then
       
            strLink = strLink & objLst.item(i).text & "(&)"
       
        End If
   
    Next
   
Set objLst = Nothing
Set objXML = Nothing

På forhånd tak!
Avatar billede neeo Nybegynder
15. maj 2006 - 13:14 #1
1 :
Nu ved jeg ikke hvor meget indflydelse du har den XML fil du henter ind, kan du redigere i den ? så kunne man evt. lige slå noget sprog eller symbol tegn til  ?

2:
Ellers kunne det være en mullighed at lave en funktion som tjekker alle tegne for indhold og erstatter indholdet til andet! ?...måske skal du have "" rundt om teksten som indholder ©.

3: Du kan evt se om en opdaterring af msxml ikke hjælper  ?

4: tjek sprog og instillinger for xml og din asp page ?
Avatar billede madssch Nybegynder
15. maj 2006 - 13:39 #2
Kan jeg få MSXML til at læse variabler i stedet for filer?

Altså, f.eks ændre objXML.Load (Server.MapPath("rss.xml")) til objXML.Load (strFileContent) - hvor så strFileContent indholder indholdet af rss.xml.

Så ville jeg kunne lave en Replace på indholdet...
Avatar billede madssch Nybegynder
15. maj 2006 - 14:29 #3
MSXML = Microsoft.XMLDOM naturligvis...
Avatar billede madssch Nybegynder
15. maj 2006 - 15:12 #4
Har selv fundet en løsning:

Set objXmlHttp = Server.CreateObject("Msxml2.ServerXMLHTTP")

    objXmlHttp.Open "GET", "http://politiken.dk/rss/indland.rss", False
    objXmlHttp.Send
   


    Set objXML = Server.CreateObject("Microsoft.XMLDOM")
    Set objLst = Server.CreateObject("Microsoft.XMLDOM")
   
        objXML.Async = False
        objXML.Load (objXmlHttp.ResponseXML)
       
        Set objLst = objXML.getElementsByTagName("*")
       
        If objLst.Length > 0 Then
       
            For i = 0 To (objLst.Length - 1)
           
                If objLst.item(i).nodeName = "title" Then
                   
                    strTitle = strTitle & objLst.item(i).text & "(&)"
                   
                ElseIf objLst.item(i).nodeName = "link" Then
               
                    strLink = strLink & objLst.item(i).text & "(&)"
                   
                ElseIf objLst.item(i).nodeName = "description" Then
               
                    strDescription = strDescription & objLst.item(i).text & "(&)"
               
                End If
           
            Next
           
        End If
       
    Set objLst = Nothing
    Set objXML = Nothing
   
Set objXmlHttp = Nothing


arrTitle = Split(strTitle, "(&)")
arrLink = Split(strLink, "(&)")
arrDescription = Split(strDescription, "(&)")


Jeg kan herefter løbe igennem mit array, og udskrive det indhold jeg måtte ønske.

neeo > Tak for dine bud.
Avatar billede madssch Nybegynder
15. maj 2006 - 15:13 #5
Deler points.

Ved ikke hvad der pludselig gjorde, at fejlen ikke længere forekom.

Måske fordi, at jeg fik indholdet udtrukket i korrekt XML-format og ikke tekst.
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