Du har ju redan 'öppnat' filen på raden ovan, när du skapade den. Kör den raden som en sub istället (utan paranteser) och kör raden under som jag skrev den, så skall det fungera.
Alltså:
Set objXMLHTTP = Server.CreateObject("Microsoft.XMLHTTP")
objXMLHTTP.Open "GET", "http://www.url.se/nyheter.xml", False
objXMLHTTP.Send
xmlstring = objXMLHTTP.ResponseText
Set objXMLHTTP = Nothing
Set fso = Server.CreateObject("Scripting.FileSystemObject")
[b]fso.CreateTextFile Server.MapPath("ssk.xml"), True
set testfile = fso.OpenTextFile(Server.MapPath("ssk.xml"),2)[/b]
RED. Alternativt kan du ju faktiskt skippa öppningen helt (tror jag):
Set objXMLHTTP = Server.CreateObject("Microsoft.XMLHTTP")
objXMLHTTP.Open "GET", "http://www.url.se/nyheter.xml", False
objXMLHTTP.Send
xmlstring = objXMLHTTP.ResponseText
Set objXMLHTTP = Nothing
Set fso = Server.CreateObject("Scripting.FileSystemObject")
[b]set testfile = fso.CreateTextFile(Server.MapPath("ssk.xml"), True)[/b]
Tackar så mycket! Men nu klagar den på nästa rad, d.v.s. där jag ska skriva xml-strängen till textfilen. Går jag verkligen rätt tillväga? Finns det ett enklare sätt att kopiera en XML-fil från en server till en annan?
Set objXMLHTTP = Server.CreateObject("Microsoft.XMLHTTP")
objXMLHTTP.Open "GET", "http://www.url.se/nyheter.xml", False
objXMLHTTP.Send
xmlstring = objXMLHTTP.ResponseText
Set objXMLHTTP = Nothing
Set fso = Server.CreateObject("Scripting.FileSystemObject")
Set sskxml = fso.CreateTextFile(Server.MapPath("ssk.xml"), True)
[b]sskxml.Write(xmlstring)[/b]
Feltyp:
Körningsfel i Microsoft VBScript (0x800A0005)
Ogiltigt proceduranrop eller argument.
/ssk/ssk.asp, line 17
Nej, jag får fortfarande samma fel. Jag försökte splitta xml-strängen och lägga in xml:en rad för rad med WriteLine, men det är samma fel där (Ogiltigt proceduranrop eller argument).
... o.s.v. men inte att loopa igenom som jag gör nedan.
<%
Set objXMLHTTP = Server.CreateObject("Microsoft.XMLHTTP")
objXMLHTTP.Open "GET", "http://www.url.se/nyheter.xml", False
objXMLHTTP.Send
arrXML = Split(objXMLHTTP.ResponseText,vbCrLF)
Set objXMLHTTP = Nothing
Set fso = Server.CreateObject("Scripting.FileSystemObject")
Set sskxml = fso.CreateTextFile(Server.MapPath("ssk.xml"), True)
Set sskxml = Nothing
Set sskxml = fso.OpenTextFile(Server.MapPath("ssk.xml"), 8)
For i = 0 To UBound(arrXML)
sskxml.WriteLine arrXML(i)
Next
sskxml.Close
Set sskxml = Nothing
Set fso = Nothing
Jepp. Nu testade jag precis här hemma och nu skapas xml-filen och den innehåller de fyra första raderna av original-xml-filen, men sedan tar det stopp:
Microsoft VBScript runtime error '800a0005'
Invalid procedure call or argument
Kan det finnas tecken i XML-koden som pajar skriptet?
Uppdatering: Det är endast vissa rader från xml-filen som genererar felet och jag misstänker att dessa rader innehåller något tecken som inte gillas av skriptet. Vad som är märkligt är att XML:en jag får inte alls ser ut som den i originalfilen.
Så här ser de fem första raderna i originalfilen ut:
Kör jag min sträng genom funktionen som finns i det inlägget blir resultatet "<" och ingenting mer. Det kan ju omöjligen vara så här omständligt att spara ner en xml-fil från nätet med ASP. Kan någon förklara hur man normalt skulle göra så skulle jag uppskatta det eftersom jag ät total novis vad gäller XML i ASP. Det ligger alltså en xml-fil på en adress (exempelvis http://www.url.com/exempel.xml) som jag vill spara ner på min server med ASP. Hur gör jag? :)
<%
Set myXMLDoc = CreateObject("MSXML2.DOMDocument")
myXMLDoc.Load "http://www.url.se/nyheter.xml"
If myXMLDoc.parseError.errorCode = 0 Then
Application.Lock
myXMLDoc.save Server.MapPath("ssk.xml")
Application.UnLock
else
Response.write myXMLDoc.parseError.reason
End If
%>
Om nyheter.xml verkligen är ett välformulerat XML-dokument, vill säga.