Avatar billede eonix Nybegynder
10. september 2011 - 14:44 Der er 12 kommentarer og
1 løsning

XmlWriter i VBScript på ASPX side?

Hej Folkens,

Mit nuværende output er følgende:

<html>
<head>
</head>
<body>
    <form runat="server">
        <p>
            Application Restarts: 
            <asp:Label id="lblAppRestarts" runat="server"></asp:Label>
        </p>
        <p>
            Free Memory (in MB):
            <asp:Label id="lblFreeMem" runat="server"></asp:Label>
        </p>
        <p>
            Requests/sec:
            <asp:Label id="lblRequestsPerSec" runat="server"></asp:Label>
        </p>
        <p>
            CPU Usage: <asp:Label id="lblCPUStat" runat="server"></asp:Label>
        </p>
            Requests BEFORE: <asp:Label id="lblBefore" runat="server"></asp:Label>
        </p>
            Requests AFTER: <asp:Label id="lblAfter" runat="server"></asp:Label>
        </p>
    </form>
</body>
</html>


Men jeg vil gerne have xml output fra min ASPX side.

Hvordan gøres dette lettest?

EoniX
Avatar billede arne_v Ekspert
10. september 2011 - 15:33 #1
Saa output XML i din .aspx !

Men du vil opdagere at det er langt nemmere at undgaa uoensket snask i output (og bedre performance) ved at bruge en .ashx fremfor en .aspx !!
Avatar billede eonix Nybegynder
10. september 2011 - 15:38 #2
Kan du beskrive hvordan jeg håndterer min output fra vbscript?
Avatar billede arne_v Ekspert
10. september 2011 - 15:46 #3
Hvordan du bruger XmlWriter? Eller hvordan du faar XmlWriter til at skrive til Response og sat ContentType korrekt?
Avatar billede eonix Nybegynder
10. september 2011 - 15:52 #4
Hvordan man får XmlWriter til at skrive til Response og sat ContentType korrekt - samt om det kan lade sig gøre i language"vbscript" :)

Et andet opklarende spørgsmål jeg har er, om Response.Output altid er det output en aspx side laver - beklager, men prøver at forstå sammenhængen.
Avatar billede arne_v Ekspert
10. september 2011 - 15:58 #5
Jeg kan proeve at lave et eksempel.
Avatar billede arne_v Ekspert
10. september 2011 - 16:08 #6
outxml.aspx
-----------

<%@ Import Namespace="System.Xml,System.IO" %>
<script language="VB" runat="server">
    Private Sub Page_Load(src As Object, e As EventArgs)
        Response.ContentType = "text/xml"
        Dim xmlwrt As XmlWriter = XmlWriter.Create(new StreamWriter(Response.OutputStream))
        xmlwrt.WriteStartElement("doc")
        xmlwrt.WriteStartElement("elm")
        xmlwrt.WriteString("first element")
        xmlwrt.WriteEndElement()
        xmlwrt.WriteStartElement("elm")
        xmlwrt.WriteString("second element")
        xmlwrt.WriteEndElement()
        xmlwrt.WriteEndElement()
        xmlwrt.Close()
    End Sub
</script>
Avatar billede eonix Nybegynder
10. september 2011 - 16:24 #7
Så ellers lovende ud, men den accepterer det ikke.

Compiler Error Message: BC30456: 'Create' is not a member of 'System.Xml.XmlWriter'.

Source Error:

Line 8: 
Line 9:          Response.ContentType = "text/xml"
Line 10:        Dim xmlwrt As XmlWriter = XmlWriter.Create(new StreamWriter(Response.OutputStream))
Line 11:        xmlwrt.WriteStartElement("doc")
Line 12:        xmlwrt.WriteStartElement("elm")

Tror du der er noget galt et andet sted ?
Avatar billede arne_v Ekspert
10. september 2011 - 17:00 #8
Hvilken version af ASP.NET bruger du?

Create har vaeret der siden 2.0!
Avatar billede arne_v Ekspert
10. september 2011 - 17:07 #9
OutXml.ashx
-----------

<%@ WebHandler Language="VB" Class="E.OutXml" %>

Imports System
Imports System.IO
Imports System.Xml
Imports System.Web

NameSpace E
    Public Class OutXml
    Implements IHttpHandler
        Public Sub ProcessRequest(ctx As HttpContext) Implements IHttpHandler.ProcessRequest
            ctx.Response.ContentType = "text/xml"
            Dim xmlwrt As XmlWriter = XmlWriter.Create(new StreamWriter(ctx.Response.OutputStream))
            xmlwrt.WriteStartElement("doc")
            xmlwrt.WriteStartElement("elm")
            xmlwrt.WriteString("first element")
            xmlwrt.WriteEndElement()
            xmlwrt.WriteStartElement("elm")
            xmlwrt.WriteString("second element")
            xmlwrt.WriteEndElement()
            xmlwrt.WriteEndElement()
            xmlwrt.Close()
        End Sub
        Public ReadOnly Property IsReusable() As Boolean Implements IHttpHandler.IsReusable
            Get
                Return True
            End Get
        End Property
    End Class
End NameSpace
Avatar billede arne_v Ekspert
10. september 2011 - 17:12 #10
Hvis du haenger paa ASP.NET 1.x saa proev at erstat:

XmlWriter.Create(new StreamWriter(Response.OutputStream))

med:

new XmlTextWriter(Response.OutputStream, Encoding.UTF8)
Avatar billede eonix Nybegynder
10. september 2011 - 17:25 #11
Ja sku da! :D - Kombination af dit første og sidste forslag gik igennem :) - Tusind tak! - du er sku for sej!

<%@ Import Namespace="System.Xml,System.IO" %>
<script language="VB" runat="server">
    Private Sub Page_Load(src As Object, e As EventArgs)
        Response.ContentType = "text/xml"
        Dim xmlwrt As XmlWriter = new XmlTextWriter(Response.OutputStream, Encoding.UTF8)
        xmlwrt.WriteStartElement("doc")
        xmlwrt.WriteStartElement("elm")
        xmlwrt.WriteString("first element")
        xmlwrt.WriteEndElement()
        xmlwrt.WriteStartElement("elm")
        xmlwrt.WriteString("second element")
        xmlwrt.WriteEndElement()
        xmlwrt.WriteEndElement()
        xmlwrt.Close()
    End Sub
</script>
Avatar billede arne_v Ekspert
10. september 2011 - 17:51 #12
saa smider jeg et svar
Avatar billede arne_v Ekspert
10. september 2011 - 17:51 #13
Og jeg mener stadig at .ashx loesningen er bedre
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