Avatar billede lklingenberg Nybegynder
24. august 2006 - 11:27 Der er 9 kommentarer og
4 løsninger

Tomt RSS feed fra XML

Hi E,

Jeg har en sub, der henter en angivet xml fil igennem en xslt tranformation:

Sub getXML(sUrlXml, sXslt)
  Dim styleFile
  Dim source, style
  styleFile = Server.MapPath("/xslt/" & sXslt & ".xslt")

  Set source = Server.CreateObject("Msxml2.DomDocument.4.0")
  Source.Async = False
  Source.SetProperty "ServerHTTPRequest", true
  Source.Load sUrlXml

  Set style = Server.CreateObject("Msxml2.DomDocument.4.0")
  Style.Async = False
  Style.Load styleFile

  Source.TransformNodeToObject style, Response
 
  Set source = Nothing
  Set style = Nothing
End Sub

XML'en henter jeg så med sub'en:

getXML("http://www.dr.dk/...", "news")

Det giver tilsyneladende ikke problemer - i hvert falt ingen fejlmeddelser.

Min XSLT ser således ud:

<?xml version="1.0" encoding="UTF-8" ?>
<xsl:stylesheet
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:msxsl="urn:schemas-microsoft-com:xslt"
    xmlns:dt="urn:schemas-microsoft-com:datatypes"
    exclude-result-prefixes="xsl msxsl dt"
    version="1.0">

<xsl:output method="html" omit-xml-declaration="yes"/>

<xsl:template match="rss/channel">
<ul>
  <xsl:for-each select="item">
  <xsl:sort data-type="text" select="pubDate" order="descending"/>
  <li>
    <a>
    <xsl:attribute name="href"><xsl:value-of disable-output-escaping="yes" select="link"/></xsl:attribute>
    <xsl:value-of disable-output-escaping="yes" select="title"/>
    </a>
    <span style="font-size: .8em;">
    [<xsl:value-of disable-output-escaping="yes" select="pubDate"/>]
    </span>
  </li>
  </xsl:for-each>
</ul>
</xsl:template>

</xsl:stylesheet>

Det eneste jeg får ud i min browser er: ÿþ

Er der nogen der kan give en forklaring på, hvorfor jeg ikke får feed'et vist?

/Lars
Avatar billede lklingenberg Nybegynder
24. august 2006 - 11:42 #1
Hm, hvis jeg gemmer xml'en på min servers harddisk og angiver den direkte sti til den, får jeg da teksten frem, men det bliver ikke tolket som HTML, men som en lang tekststreng.
Avatar billede lklingenberg Nybegynder
24. august 2006 - 11:48 #2
Kan det være en sikkerhedsindstilling på serveren, der gør, at jeg ikke kan hente XML fra eksterne kilder (http://)?

I øvrigt så virker tricket med at gemme XML filen på harddisken fint i IE, mens jeg stadig får én lang tekststreng med HTML tags og det hele i Firefox.

Jeg får stadig de to tegn ÿþ i begge browsere...
Avatar billede Slettet bruger
24. august 2006 - 13:24 #3
Prøv at bruge ServerXMLHTTP objektet istedet for:

Set Source = Server.CreateObject("Msxml2.ServerXMLHTTP.4.0")
  Source.open("GET", sUrlXml, False)
  Source.send

/CS
Avatar billede Slettet bruger
24. august 2006 - 13:26 #4
Nåja - og så ligger det loadede XMLDOM objekt jo så i Source.responseXML...

/CS
Avatar billede lklingenberg Nybegynder
24. august 2006 - 15:01 #5
hm, så får jeg en gammel kending:

msxml4.dll error '80072ee7'
The server name or address could not be resolved

Sidste jeg stødte ind i den fejl var i et xslt, hvor jeg ville inkludere en xml-fil med document-metoden. Det kunne kun lade sig gøre, hvis jeg (som med feedet her) angiv den direkte sti til filen på serveren (e:\\www\... osv.). Hvorfor f... kan jeg ikke få lov til at inkludere en xml-fil via http...?
Avatar billede janegil Nybegynder
25. august 2006 - 10:43 #6
ÿþ - det indikerer visst UTF-16.
Så hvis det er kodet i UTF-16, kan det bli bedre hvis du også angir UTF-16 i HTTP-headeren og XML-deklarasjonen. http://styrheim.com/tools/wap-faq.html#default_encoding

Som alltid: sånne feil er lettere å se hvis jeg har en URL til problemsiden.
Avatar billede lklingenberg Nybegynder
25. august 2006 - 11:09 #7
Avatar billede janegil Nybegynder
25. august 2006 - 12:06 #8
Nå er du over i msxml-feil, det er utenfor hva jeg kan noe om.

Hvis du ikke kommer videre denne veien, så kunne du vende tilbake til der du hadde ÿþ og trolig UTF-16, derfra kunne jeg muligens ha noen forslag.
Avatar billede Slettet bruger
25. august 2006 - 12:46 #9
Hmm - det er aldrig lykkedes mig at få MSXML parseren til at hente via HTTP med document() - men der er noget med at man kan sætte de foskellige timeouts til ServerXMLHTTP objektet. Prøv flg. før du kalder .open() og .send():

Source.setTimeouts(5 * 1000, 5 * 1000, 15 * 1000, 15 * 1000)

/CS

(Det har  noget at gøre med hvor længe den bl.a. forsøger at "resolve" URL'en)
Avatar billede lklingenberg Nybegynder
25. august 2006 - 13:48 #10
Det hjalp desværre ikke.

Du skriver, at du aldrig har kunnet få MSXML parseren til at hente XML ind via HTTP med document(). Det har jeg gjort før uden problemer, så jeg tænker, det måske alligevel har noget med serverens opsætning (sikkerhedsspørgsmål) at gøre.
Avatar billede lklingenberg Nybegynder
07. september 2006 - 11:39 #11
Jeg lukker snart... nogle sidste inputs?

-> janegil:
Giv gerne et svar også - UTF-tippet bliver sikkert nyttigt, når jeg får det andet problem løst.
Avatar billede janegil Nybegynder
07. september 2006 - 11:51 #12
tjah
Avatar billede lklingenberg Nybegynder
12. september 2006 - 13:11 #13
Tak for 'kampen'. I får begge lidt 'håndører', da I begge har givet mig lidt ny viden på området.
/Lars
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



Seneste spørgsmål Seneste aktivitet
I går 23:37 Poe strøm Af lurup i LAN/WAN
I går 14:46 GIF-EDITOR Af snestrup2000 i Billedbehandling
I går 14:03 Logge ind Af Bob i PC
I går 12:12 2 skærme - 1 virker - den anden siger No signal Af eksmojo i Skærme
I går 10:33 openvpn projekt Af dcedata1977 i Windows