[XML ASP] Probleem met Parsen XML

Pagina: 1
Acties:

  • Denga
  • Registratie: September 2000
  • Laatst online: 14-06 16:53

Denga

The riding never stops....

Topicstarter
Ik probeer de nieuws headlines van Nu.nl te parsen en te verwerken op mijn eigen site... nu doe ik dit door middel van een geddeltre code in het ASP bestand en een XSL bestand:

XML in ASP
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
<%
   ' define the variables
   dim objHTTP
   dim objXML
   dim objXSL
                
   ' set-up XMLHTTP
   set objHTTP = Server.CreateObject("Microsoft.XMLHTTP")
                
   ' get the requested XML data from the remote location
   ' change the URL as per your feed.

   objHTTP.open "GET", "http://nu.nl/deeplink_xml", false
   objHTTP.send
                
   ' save the XML in objXML as XML
   set objXML = objHTTP.responseXML
                
   ' set-up XMLDOM
   set objXSL=Server.CreateObject("microsoft.xmldom")
   objXSL.async=false
                
   ' load the XSL style sheet into the objXSL object
   ' change file name to match your XSL file
   objXSL.load(Server.MapPath("csstyle.xsl"))
                
   ' check for errors in the XSL
   if (objXSL.readyState = 4 AND objXSL.parseError.errorCode = 0) then
   
   ' if everything is alright parse the XML with our XSL
   Response.Write(objXML.transformnode(objXSL))
   else
       'if an error occurs, report it
       Response.Write "Error: " & objXSL.parseError.reason & "<br> URL:" & objXSL.url
   end if
%>


XSL:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
  <html>
  <body>
    <table border="0">
      <xsl:for-each select="nu/section">
      <tr>
        <td><xsl:value-of select="document"/></td>
      </tr>
      </xsl:for-each>
    </table>
  </body>
  </html>
</xsl:template>
</xsl:stylesheet>


maar hij laad het XML bestand van nu.nl wel (dit heb ik getest door een Response.Write), alleen laat ie geen tekst zien op de site, het blijfthelemaal leeg...
Weet iemand waar dit aan kan liggen? :?

Never eat yellow snow...


  • party42
  • Registratie: Oktober 2000
  • Laatst online: 11:22
sorry voor verneuken opmaak
en ik gebruik geen XSLt

maar
:)

zo doe ik het:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
Function ShowHeadLines
        Dim theXML
        Dim theList
        Dim theItem
        Dim PI
        Dim nuXML
        Dim j, i
        Dim show_news
            set theXML = Server.CreateObject("MSXML2.DOMDocument") 
            set theList = Server.CreateObject("MSXML2.DOMDocument")
            set theItem = Server.CreateObject("MSXML2.DOMDocument")
            
                theXML.async = False
                theXML.setProperty "ServerHTTPRequest", true
                            
                PI = ExecutePage("http://nu.nl/deeplink_xml/")
                PI = "<?xml version='1.0' encoding='ISO-8859-1' ?>" & PI
                theXML.LoadXML(PI)
                
            if theXML.parseError.errorCode <> 0 then
                Response.write "Er is geen nieuws."
            else
              
            Set theList = theXML.getElementsByTagName("section")
              
            Response.Write "<table width=100% height=100% cellpadding=0 cellspacing=2>"
                For i = 0 to theList.length - 1
                
                    if theList(i).getAttribute("name") = "economie.hoofd" then
                    set theItem = theList(i).getelementsbytagname("document")
                        for j = 0 to theItem.length - 1
                                Response.Write "<tr><TD width=1><LI></td><td ><a target=_blank href="& theItem(j).getattribute("href") &">" & theItem(j).text & "</a></td></tr>"
                        next
                    Set theItem = Nothing          
                    end if
                Next
            Response.Write "</table>"
            Set theList = Nothing    
            end if
        
        Set theXML = Nothing
        Set nuXML = Nothing

End function

[ Voor 16% gewijzigd door party42 op 07-01-2003 14:09 ]

Everyday's an endless stream, of cigarettes and magazines...


  • Denga
  • Registratie: September 2000
  • Laatst online: 14-06 16:53

Denga

The riding never stops....

Topicstarter
dan doet ie nog niks bij mij

Never eat yellow snow...


  • party42
  • Registratie: Oktober 2000
  • Laatst online: 11:22
en je roept de functie wel aan?

zit je achter vuurmuur?

want bovenstaand doet het perfect bij mij

Everyday's an endless stream, of cigarettes and magazines...


  • machiel
  • Registratie: Januari 2000
  • Laatst online: 16-07 18:09
Probeer eens met
"set xmlDoc = Server.CreateObject("MSXML.DOMDocument")"

en staat er <?xml version="1.0" encoding="ISO-8859-1"?> aan het begin?

[ Voor 42% gewijzigd door machiel op 07-01-2003 14:49 ]


Verwijderd

Nou, als ie niets laat zien dan is dat waarschijnlijk te danken aan een verkeerde XSL.

Ik denk met name een verkeerde <xsl:template> of <xsl:for-each>.

edit:

Ligt het niet aan NU.nl?? Als ik linkje volg http://nu.nl/deeplink_xml/ dan krijg ik als response niet de juiste contenttype, ik zie immers geen xml boom maar een lap tekst.

[ Voor 43% gewijzigd door Verwijderd op 07-01-2003 14:58 ]


  • Denga
  • Registratie: September 2000
  • Laatst online: 14-06 16:53

Denga

The riding never stops....

Topicstarter
party42, hoe heb e dat dan gedaan? ik neem aan dat er ipv die xml functie in ASP je die functie hierboven hebt gebruikt mer <%%> tagservoor en erachter....?

Never eat yellow snow...


  • party42
  • Registratie: Oktober 2000
  • Laatst online: 11:22
zegmaar zo:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<%
     Function ShowHeadLines
     ...
     end function
%>
<html>
<head>
</head>
<body>

<%
     ShowHeadlines()
%>

</body>
</html>

[ Voor 57% gewijzigd door party42 op 07-01-2003 15:06 ]

Everyday's an endless stream, of cigarettes and magazines...


  • machiel
  • Registratie: Januari 2000
  • Laatst online: 16-07 18:09
met de xsl is niks mis.

  • Denga
  • Registratie: September 2000
  • Laatst online: 14-06 16:53

Denga

The riding never stops....

Topicstarter
Server object error 'ASP 0177 : 800401f3'

Server.CreateObject Failed

/bedrijveninfo/bedrijveninfo.biz/index.asp, line 10

Invalid ProgID. For additional information specific to this message please visit the Microsoft Online Support site located at: http://www.microsoft.com/contentredirect.asp.

als ik het doe zols Party42 me net heeft uitgelegd. En line 10 dat is dus die MSXML2.DOMDocument waar ie over valt...

[ Voor 24% gewijzigd door Denga op 07-01-2003 15:41 ]

Never eat yellow snow...


  • Phenomenon
  • Registratie: December 2000
  • Laatst online: 01-04 13:18
Nou dan ondersteund je server dat object niet. Zal waarschijnlijk nog wel niet uitegerust zijn met de nieuwste :)

Maar als je bij nu.nl ff leest, zul je ook lezen dat ze het in een niet standaard xml formaat hebben. Mischien als je nu zelf de ontbrekende dingen ervoor en na invoegt, dat het dan gaat werken.

  • party42
  • Registratie: Oktober 2000
  • Laatst online: 11:22
heb je wel de XML parser gedownload? bij voorkeur versie 4.x?

dat lijkt me het meest verklaarbare nl

linkje

[ Voor 4% gewijzigd door party42 op 07-01-2003 15:41 ]

Everyday's an endless stream, of cigarettes and magazines...


  • party42
  • Registratie: Oktober 2000
  • Laatst online: 11:22
Supervisor schreef op 07 January 2003 @ 15:39:
Maar als je bij nu.nl ff leest, zul je ook lezen dat ze het in een niet standaard xml formaat hebben. Mischien als je nu zelf de ontbrekende dingen ervoor en na invoegt, dat het dan gaat werken.
inderdaad

daarom heb ik dus in mijn functie (zie een paar post hierboven) dit staan:
PHP:
1
PI = "<?xml version='1.0' encoding='ISO-8859-1' ?>" & PI 

Everyday's an endless stream, of cigarettes and magazines...


  • Denga
  • Registratie: September 2000
  • Laatst online: 14-06 16:53

Denga

The riding never stops....

Topicstarter
ik zal het proberen

Never eat yellow snow...


  • Denga
  • Registratie: September 2000
  • Laatst online: 14-06 16:53

Denga

The riding never stops....

Topicstarter
heb het geprobeerd, hij staat nu op de server ipv de test server maar nu geeft ie de volgende foutmelding:

Microsoft VBScript runtime error '800a000d'

Type mismatch: 'ExecutePage'

/staropramen/inc_xmlparser.asp, line 17

Die functie ExecutePage... waar komt ie vandaan?

[ Voor 21% gewijzigd door Denga op 08-01-2003 16:48 ]

Never eat yellow snow...


  • Denga
  • Registratie: September 2000
  • Laatst online: 14-06 16:53

Denga

The riding never stops....

Topicstarter
misschien Party42?

Never eat yellow snow...


Verwijderd

Ga er maar gerust van uit dat ExecutePage een zelf geschreven functie is, die alleen maar een URL meekrijgt, en de inhoud returned. Ik neem aan dat je dat zelf ook wel kan maken, aangezien de code ervoor al grotendeels in je openingspost staat.

Succes :)

  • risr
  • Registratie: Juli 2002
  • Laatst online: 14-07 10:19
Verwijderd schreef op 07 January 2003 @ 14:54:

[...]

edit:
Ligt het niet aan NU.nl?? Als ik linkje volg http://nu.nl/deeplink_xml/ dan krijg ik als response niet de juiste contenttype, ik zie immers geen xml boom maar een lap tekst.
De server returned:
Content-Type: text/html; charset=iso-8859-1
ipv:
Content-Type: text/xml

Wellicht dat dit de oorzaak kan zijn :?

Als je de juiste charset wordt gebruikt laadt hij het xml bestand wel. Test maar eens door de ongeldige tekens te verwijderen.

  • party42
  • Registratie: Oktober 2000
  • Laatst online: 11:22
Verwijderd schreef op 09 januari 2003 @ 11:40:
Ga er maar gerust van uit dat ExecutePage een zelf geschreven functie is, die alleen maar een URL meekrijgt, en de inhoud returned.
LOL

sorry

beetje incomplete code:

executepage:
ASP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Function ExecutePage(external_url)
    Dim xmlhttp, tussenteken, i, CookieString
    Set xmlhttp = CreateObject("MSXML2.ServerXMLHTTP")
    if Instr(1, external_url, "?") > 0 then
        tussenteken = "&"
    else
        tussenteken = "?"
    end if

    xmlhttp.open "GET", external_url & tussenteken & "cachecommand=bypass", false
    
    ExecutePage = xmlhttp.ResponseText
    Set xmlhttp = Nothing
End Function


should work

(sorry for being late)

oh ja
Als je de juiste charset wordt gebruikt laadt hij het xml bestand wel. Test maar eens door de ongeldige tekens te verwijderen.
nu.xml is erg slecht in het versturen van normale XML. alsof ze de moeite er niet voor nemen... maargoed. met het toevoegen van eerder genoemde reply lukt het altijd wel aardig..

Afbeeldingslocatie: http://www.nathanid.nl/smileturn.gif

[ Voor 33% gewijzigd door party42 op 10-01-2003 09:47 ]

Everyday's an endless stream, of cigarettes and magazines...

Pagina: 1