Hej, jag undrar om det är någon som redan har något färdigt script för att utföra följande: Här kommer ett kodförslag (fritt ur minnet dvs ej testat...) Tack, men på detta sätt ser jag inte att jag kan skapa dessa rubriker, sätta namn på taggarna och fylla med data. Är det inte så att man kanske behöver använda XML-DOM först för att skapa dessa objekt. Eller är jag ute ock cyklar? inte så insatt i det här men borde det inte att gå att göra med [Streama filer till webläsaren] med vissa ändringar förstås. <code> Finns det inte XML-DOM som man kan använda för att bygga upp en xmlfil i internminnet som en stream? Dessa exempel verkar inte tillräckligt flexibla. Det känns som något fattas. Här är ett nytt förslag: Det här ser intressant ut, skall utvärdera tekniken. Mikael, detta var precis det jag behövde. Tack för att du tog dig tid och för att visa min uppskattning får du ett bonusmedlemskap ett år. Tack för det!skapa en xmlfil för download via asp
1. Skapa en xmlfil i minnet som innehåller nedastående mall och fylla på med x antal poster från en tabell. Jag vill alltså fylla domobjektet i internminnet. Mallen ser ut som följer med tre poster i varje block:
<code>
<?xml version="1.0" encoding="ISO-8859-1" ?>
- <Rapport>
<Rubrik>Frivillig info som läggs ut på skärmen efter inläsning av fil</Rubrik>
- <Data>
<PersonNr>ÅÅMMDD-XXXX</PersonNr>
<Namn>Efternamn, Förnamn</Namn>
<UtbDatum>ÅÅÅÅ-MM-DD</UtbDatum>
</Data>
- <Data>
<PersonNr>ÅÅMMDD-XXXX</PersonNr>
<Namn>Efternamn, Förnamn</Namn>
<UtbDatum>ÅÅÅÅ-MM-DD</UtbDatum>
</Data>
</Rapport>
</code>
2. När filen är klar, utförs en automatisk download så användaren kan ladda hem filen och placera den på sin dator. Filnamnet är oviktigt.
3. Finns det någon bättre lösning så presentera gärna denna. Jag är öppen för alla förslag. Dock skall tänkas på att fler användare kan välja att köra samtidigt så om man mellanlagrar filen måste filnamn slumpas och sen tas bort vilket jag ser som ett extra onödigt moment om det nu går att undvika.
Jag skulle säkert kunna fixa detta på någon dag med det vore skönt att få starthjälp och slippa uppfinna hjulet en gång till. Tack på förhand.Sv: skapa en xmlfil för download via asp
<code>
<%
'Öppna databas och läs in data
Dim cn
Dim rs
Set cn = Server.CreateObject("ADODB.Connection")
cn.Open "driver={Microsoft Access Driver.....
set rs = Server.CreateObject("ADODB.Recordset")
sql="SELECT * FROM..."
rs.Open sql,cn
Dim objStream
Set objStream = Server.CreateObject("ADODB.Stream")
objStream.Mode = 3 ' Read/Write mode
objStream.Open
rs.Save response, adPersistXML
objStream.Position = 0
'Tvinga nedladdning
Response.AddHeader "content-disposition","attachment; filename=filnamnet.xml"
'Skicka data
Response.Write objStream.ReadText ' eller var det Response.WriteBinary ?
rs.Close
Set rs = Nothing
%>
</code>Sv: skapa en xmlfil för download via asp
Målet är att skapa en xml-fil som ser exakt ut som ovan.Sv: skapa en xmlfil för download via asp
edit: såg nu att det var ungefär det HÖR hade.Sv: skapa en xmlfil för download via asp
<%
'Öppna databas och läs in data
Dim cn
Dim rs
Set cn = Server.CreateObject("ADODB.Connection")
cn.Open "driver={Microsoft Access Driver.....
set rs = Server.CreateObject("ADODB.Recordset")
sql="SELECT * FROM..."
rs.Open sql,cn
'Tvinga nedladdning
Response.AddHeader "content-disposition","attachment; filename=filnamnet.xml"
Response.Write "<?xml version=""1.0"" encoding=""ISO-8859-1"" ?>" & vbcrlf
Response.Write "<Rapport>" & vbcrlf
Response.Write " <Rubrik>" & Titel & "</Rubrik>" & vbcrlf
Do Until rs.EOF
Response.Write " <Data>" & vbcrlf
Response.Write " <PersonNr>" & Fixa(rs("PersonNr")) & "</PersonNr>" & vbcrlf
Response.Write " <Namn>" & Fixa(rs("Efternamn")) & ", " & Fixa(rs("Förnamn")) & "</Namn>" & vbcrlf
Response.Write " <UtbDatum>" & Fixa(rs("UtbDatum")) & "</UtbDatum>" & vbcrlf
Response.Write " </Data>" & vbcrlf
Loop
Response.Write "</Rapport>" & vbcrlf
rs.Close
Set rs = Nothing
Function Fixa(s)
r = Replace(s,"<","<")
r = Replace(r,">",">")
Fixa = r
End Function
%>
</code>
Koden skriver sin egen xml-kod, vilket du kan ställa in hur du vill.Sv: skapa en xmlfil för download via asp
Sv: skapa en xmlfil för download via asp
<code>
<%
'Tvinga nedladdning
Response.AddHeader "content-disposition","attachment; filename=filnamnet.xml"
'Skapa DOM objectet
Set domDOC = Server.CreateObject("MSXML.DOMDocument")
'Sätt processingInstruction
Set pi = domDOC.createProcessingInstruction("xml", "version=""1.0"" encoding=""ISO-8859-1""")
domDOC.insertBefore pi, domDOC.childNodes.Item(0)
'Skapa rooten
Set DOMRootNode = domDOC.createElement("Rapport")
domDOC.appendChild DOMRootNode
'Skapa rubriken
Set DOMLevNode = domdoc.createElement("Rubrik")
DOMrootNode.appendChild DOMLevNode
DOMrootNode.lastChild.Text = "Frivillig info som läggs ut på skärmen efter inläsning av fil"
'Öppna data basen
.............
................
Do until rs.eof
Set DOMLevNode = domDOC.createElement("Data")
DOMRootNode.appendChild DOMLevNode
Set ValueElement = domDOC.createElement("Personnr")
DOMLevNode.appendChild ValueElement
DOMLevNode.lastChild.Text = rs("Personnr")
Set ValueElement = domDOC.createElement("Namn")
DOMLevNode.appendChild ValueElement
DOMLevNode.lastChild.Text = rs("Efternamn") & ", " & rs("Förnamn")
Set ValueElement = domDOC.createElement("UtbDatum")
DOMLevNode.appendChild ValueElement
DOMLevNode.lastChild.Text = rs("UtbDatum")
rs.movenext
loop
'Stäng databasen
.................
...................
'Skicka dokumentet
domDOC.Save(Response)
%>
</code>Sv: skapa en xmlfil för download via asp
Tack för hjälpen, återkommer.Sv: skapa en xmlfil för download via asp
Sv: skapa en xmlfil för download via asp
Det är alltid rolig att kunna hjälpa någon. Dessutom tvingas man själv tänka till och det gör att de egna kunskaper utvecklas.
Jag kommer att även att bli Bonusmedlem på det "riktiga" sättet.