Avatar billede per1291 Nybegynder
28. juli 2006 - 09:44 Der er 6 kommentarer og
1 løsning

Hvordan læse tekstfil fra et andet site?

Hej - denne stump kode virker i ASP:

<%
Dim fso, f, txtvar
Set fso = CreateObject("Scripting.FileSystemObject")
filespec = Server.Mappath("/side1.txt")
Set f = fso.OpenTextFile(filespec,1)
txtvar = f.ReadAll
Response.write txtvar
f.Close
%>

Men den forudsætter jo at side1.txt ligger på samme site som koden.
Jeg kunne tænke mig at erstatte "filespec="-linjen med en linje som denne:
filespec = "http://www.otherdomain.dk/side1.txt"

Men syntaksen er åbenbart forkert.

Hvad gør jeg? - Hilsen Per
Avatar billede killerclown Nybegynder
28. juli 2006 - 09:48 #1
Hej Per!
Tjek lige dette svar fra Medions :
http://www.eksperten.dk/spm/630531

/Killer
Avatar billede per1291 Nybegynder
28. juli 2006 - 10:06 #2
Hej Killer -

Jeg kan ikke gennemskue alle disse kodestumper. Kan du se præcis, hvad jeg bør ændre i min egen kode?

Min løsning skal kunne køres fra hjemmesiden, og ideen er at "snylte" på et fremmed RSS-feed. (Jeg har fået lov til det.) Jeg vil selv lave et script til behandling af den indlæste XML-fil. - Hilsen Per
Avatar billede killerclown Nybegynder
28. juli 2006 - 10:26 #3
Hmmm ..
Jeg er ikke sikker på, at du kan gøre det sådan, som du forsøger....
Men dette virker fint :

Den 3. nederste linie kalder funktionen med siden, der skal læses som parameter.
Det er blot her du skal ændre noget :o)

<%
Private Function GetHTMLBin(strURL)
    Dim objXMLHTTP, strReturn
    Set objXMLHTTP = server.CreateObject("Microsoft.XMLHTTP")
   
    objXMLHTTP.Open "GET", strURL, False
    objXMLHTTP.Send
   
    GetHTMLBin = objXMLHTTP.responseBody
    Set objXMLHTTP = Nothing
End Function

Private Function BinToText(varBinData, intDataSizeInBytes) ' as String

    Dim objRs
    Const adFldLong = &H00000080
    Const adVarChar = 200
   
    Set objRS = CreateObject("ADODB.Recordset")
   
    objRS.Fields.Append "txt", adVarChar, intDataSizeInBytes, adFldLong
    objRS.Open
   
    objRS.AddNew
    objRS.Fields("txt").AppendChunk varBinData
    BinToText = objRS("txt").Value
   
    objRS.Close
   
    Set objRS = Nothing
End Function

html = BinToText(GetHTMLBin ("http://www.killerclown.dk/test.txt"), 35000)
response.Write(html)
%>

/Killer
Avatar billede per1291 Nybegynder
28. juli 2006 - 11:27 #4
Hej Killer !

Tusind tak. Jeg havde svært ved at se, at det skulle være nødvendigt at indlæse i Bin-format og derefter lave om til Text. Men sådan er det jo nok. Dit testeksempel virker i hvert fald, og jeg tror ikke jeg får svært ved at bruge koden.

Min brug af et eksternt RSS-feed kunne måske fortjene en senere kommentar. Så vær forberedt på denne.

Venligst læg et svar. - Hilsen Per
Avatar billede killerclown Nybegynder
28. juli 2006 - 12:00 #5
Værsgod :o)
Det kan være Medions fortjener dem mere, men får han dem bare af mig.
/Killer
Avatar billede per1291 Nybegynder
30. juli 2006 - 18:50 #6
Hej igen - ville lige fortælle hvordan det er lykkedes mig at læse et RSS-feed, og viderebringe det på min egen hjemmeside. Jeg læser B.T.'s RSS-feed "seneste nyt" vha. den foreslåede kode, idet de sidste linjer ændres til dette:

<%
txtvar = BinToText(GetHTMLBin ("http://www.bt.dk/rss/senestenyt.xml"), 35000)
txtvar = EditTekst(txtvar)
%>

Jeg bruger et Javascript til den videre redigering, men det kunne formentlig gøres vha. VBscript også:

<script type="text/javascript" language="Javascript" runat="Server">
function EditItem(Inputtekst)
{
var headline=Inputtekst.split(/<(\/?)title>/i)[1];
var tekst=Inputtekst.split(/<(\/?)description>/i)[1];
var link=Inputtekst.split(/<(\/?)link>/i)[1];
return('<b>'+headline+'</b><br>'+tekst+'..<br><a href="'+link+'">Læs videre i B.T.</a><p>');
}
function EditTekst(txtvar)
{
var S=txtvar.replace(/\s+/igm," "); /* fjerner whitespace f.eks. linjeskift */
S=S.replace(/.*?<item>/i,""); /* fjerner til og med første forekomst af <item> */
var items=S.split(/<\/item>( ?)<item>/); /* opdeler i items */
items[items.length-1]=items[items.length-1].replace(/<\/item>.*$/i,"");
S="";
for (i=0; i<items.length; i++) {S+=EditItem(items[i])};
return(S);
}
</script>

I min html-kode indføjer jeg denne linje:

<% =txtvar %>

Hilsen Per
Avatar billede killerclown Nybegynder
30. juli 2006 - 21:47 #7
Very nice, Per
/Killer
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