updating with aspx and XML file

Discussion in 'ASP .Net' started by slinky, Jun 5, 2007.

  1. slinky

    slinky Guest

    Thanks in advance fo rany help... I have an XML data file (well-
    formed) that I need to place into my website's app_data folder. I
    would like to have an .aspx form on my site that simply has two
    textboxes (corresponding to two XML fields in my file), and a
    "submit"
    button that will update the file. Any clues as to the code to use?

    I'm most familiar with the DataAdapter/DataSet model and using
    SQLserver files and having an INSERT INTO query to update. Can this
    be
    used on an XML file also? There may be better ways, but just curious
    if this model COULD work with XML.
    Thanks!
     
    slinky, Jun 5, 2007
    #1
    1. Advertising

  2. On Jun 5, 9:31 pm, slinky <> wrote:
    > Thanks in advance fo rany help... I have an XML data file (well-
    > formed) that I need to place into my website's app_data folder. I
    > would like to have an .aspx form on my site that simply has two
    > textboxes (corresponding to two XML fields in my file), and a
    > "submit"
    > button that will update the file. Any clues as to the code to use?
    >
    > I'm most familiar with the DataAdapter/DataSet model and using
    > SQLserver files and having an INSERT INTO query to update. Can this
    > be
    > used on an XML file also? There may be better ways, but just curious
    > if this model COULD work with XML.
    > Thanks!


    Dim myDataSet as New DataSet()
    myDataSet.ReadXml(Server.MapPath("books.xml"))

    http://aspnet.4guysfromrolla.com/articles/052902-1.aspx

    http://www.google.com/search?hl=en&q=DataSet xml asp.net
     
    Alexey Smirnov, Jun 5, 2007
    #2
    1. Advertising

  3. slinky

    slinky Guest

    Thanks! http://aspnet.4guysfromrolla.com/articles/052902-1.aspx is a
    great site...but I tried out some of you code below from the site (I'm
    a student-newbie using Visual Web Developer Express 2005). I pasted
    the following into a blank .aspx page and your books.xml file into my
    app_data folder on my site, re-build, and get rid of some errors, I
    try to view it in my browser and I get server errors:

    here's my aspx:

    <%@ import Namespace="System.Data" %>
    <script runat="server">
    sub Page_Load(sender as Object, e as EventArgs)
    Dim myDataSet as New DataSet()

    myDataSet.ReadXml(Server.MapPath("books.xml"))

    dgBooks.DataSource = myDataSet
    dgBooks.DataBind()

    dgBooksPretty.DataSource = myDataSet
    dgBooksPretty.DataBind()
    end sub
    </script>

    <html xmlns="http://www.w3.org/1999/xhtml" >
    <head id="Head1" runat="server">
    <title>StartPage</title>
    </head>
    <body>
    <b>The Contents of the XML File
    <a href="/demos/books.xml"><code>books.xml</code></a></b><br />
    <asp:datagrid id="dgBooks" runat="server" />

    <p align="center">
    <b>A Nicer Looking DataGrid Representation of the XML File
    <a href="/demos/books.xml"><code>books.xml</code></a></b><br />
    </p>
    <asp:datagrid id="dgBooksPretty" runat="server"
    AutoGenerateColumns="False"
    Font-Name="Verdana"
    Font-Size="Small"
    HorizontalAlign="Center"
    ItemStyle-BackColor="#FFFFCC"
    AlternatingItemStyle-BackColor="#EEEEEE">

    <HeaderStyle BackColor="Red" HorizontalAlign="Center"
    ForeColor="White" Font-Bold="True" />

    <Columns>
    <asp:BoundColumn HeaderText="Title" DataField="title" />
    <asp:BoundColumn HeaderText="Author" DataField="author" />
    <asp:BoundColumn HeaderText="Year" DataField="year" />
    </Columns>
    </asp:datagrid>

    </body>
    </html>

    and here's my xml file:

    <?xml version="1.0" encoding="UTF-8" ?>
    <books>
    - <book>
    <title>Teach Yourself Active Server Pages 3.0 in 21 Days</title>
    <author>Mitchell</author>
    <year>1999</year>
    </book>
    - <book>
    <title>Designing Active Server Pages</title>
    <author>Mitchell</author>
    <year>2000</year>
    </book>
    - <book>
    <title>ASP.NET: Tips, Tutorials, and Code</title>
    <author>Mitchell</author>
    <year>2001</year>
    </book>
    - <book>
    <title>ASP Unleashed</title>
    <author>Walther</author>
    <year>1998</year>
    </book>
    - <book>
    <title>ASP.NET Unleashed</title>
    <author>Walther</author>
    <year>2002</year>
    </book>
    - <book>
    <title>Creating Data Driven ASP.NET Applications</title>
    <author>Seven</author>
    <year>2002</year>
    </book>
    </books>




    >
    > Dim myDataSet as New DataSet()
    > myDataSet.ReadXml(Server.MapPath("books.xml"))
    >
    > http://aspnet.4guysfromrolla.com/articles/052902-1.aspx
    >
    > http://www.google.com/search?hl=en&q=DataSet xml asp.net
     
    slinky, Jun 7, 2007
    #3
  4. On Jun 7, 9:56 pm, slinky <> wrote:
    > try to view it in my browser and I get server errors:
    >


    :)

    What errors do you get?
     
    Alexey Smirnov, Jun 7, 2007
    #4
  5. slinky

    slinky Guest

    I figured it out. I set the web.config file to <customErrors
    mode="Off"/>
    then noticed the error saying the app could not find the xml file
    because I had it in my App_Data folder.
    So I moved it to the remote host folder and it works fine now. Thanks
    for helping me up the steep hill
    of understanding reading XML files as data into my apps.

    BTW... since (correct me if I'm wrong) ALL data is ultimately sent
    over the internet as XML files,
    is there an advantage in using them as your relational database to
    start with? I know the markup
    makes them rather verbose, but would not in reality a SQLserver file
    be turned into an XML file
    for moving over the net?... Kind of an academic question, just
    curious... Thanks!


    On Jun 7, 6:15 pm, Alexey Smirnov <> wrote:
    > On Jun 7, 9:56 pm, slinky <> wrote:
    >
    > > try to view it in my browser and I get server errors:

    >
    > :)
    >
    > What errors do you get?
     
    slinky, Jun 8, 2007
    #5
  6. On Jun 8, 2:51 pm, slinky <> wrote:
    > BTW... since (correct me if I'm wrong) ALL data is ultimately sent
    > over the internet as XML files,
    > is there an advantage in using them as your relational database to
    > start with? I know the markup
    > makes them rather verbose, but would not in reality a SQLserver file
    > be turned into an XML file
    > for moving over the net?... Kind of an academic question, just
    > curious... Thanks!
    >


    All data sent over the internet are sent in the binary packets :)

    XML can be useful a number of reasons: easy to edit, lightweight, no
    additional license costs and so on. Database is secure, easy to
    search, efficient for large data sets...

    http://www.google.com/search?q=xml vs database
     
    Alexey Smirnov, Jun 8, 2007
    #6
  7. slinky

    slinky Guest

    That makes sense...... also along the lines of XML editing, etc. If I
    had an .aspx form that I wanted to simply have three textboxes
    (corresponding to Author, Title, and Year as in your XML file), and a
    submit button... how could I setup the code/form so the user could
    enter a book and hit Submit and add that to the XML file? I don't want
    the list of books to be displayed though on this form. I've done this
    before in vb.net with an XML file for a desktop app, but not for
    an .aspx app. Any clues? Thanks!

    On Jun 8, 10:54 am, Alexey Smirnov <> wrote:
    > On Jun 8, 2:51 pm, slinky <> wrote:
    >
    > > BTW... since (correct me if I'm wrong) ALL data is ultimately sent
    > > over the internet as XML files,
    > > is there an advantage in using them as your relational database to
    > > start with? I know the markup
    > > makes them rather verbose, but would not in reality a SQLserver file
    > > be turned into an XML file
    > > for moving over the net?... Kind of an academic question, just
    > > curious... Thanks!

    >
    > All data sent over the internet are sent in the binary packets :)
    >
    > XML can be useful a number of reasons: easy to edit, lightweight, no
    > additional license costs and so on. Database is secure, easy to
    > search, efficient for large data sets...
    >
    > http://www.google.com/search?q=xml vs database
     
    slinky, Jun 8, 2007
    #7
  8. On Jun 8, 5:42 pm, slinky <> wrote:
    > That makes sense...... also along the lines of XML editing, etc. If I
    > had an .aspx form that I wanted to simply have three textboxes
    > (corresponding to Author, Title, and Year as in your XML file), and a
    > submit button... how could I setup the code/form so the user could
    > enter a book and hit Submit and add that to the XML file? I don't want
    > the list of books to be displayed though on this form. I've done this
    > before in vb.net with an XML file for a desktop app, but not for
    > an .aspx app. Any clues? Thanks!
    >



    There are tons of articles and examples about that subject on the web

    For example: http://www.freevbcode.com/ShowCode.asp?ID=2789
     
    Alexey Smirnov, Jun 8, 2007
    #8
  9. slinky

    slinky Guest

    I went to the site you listed for Writing to XML... I have put
    together a form with a textbox and a button... my code is below... I
    simply want a user to add a record to the XML file then hit the submit
    button, but I can seem to get the plumbing right on this one. I get
    several errors. I've been able to do not unsimilar things with XML for
    desktop apps (see my code at very bottom) but ASP is really throwing
    me! Thanks for any help... struggling still....

    <%@ Page Language="VB" %>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://
    www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <script runat="server">
    Sub btnWriteXML_OnClick(ByVal sender As Object, ByVal e As
    EventArgs)
    Try
    Dim enc As Encoding
    Dim objXMLTW As New
    HtmlTextWriter(Server.MapPath("menu.xml"), enc)
    objXMLTW.WriteStartDocument()
    objXMLTW.WriteStartElement("Name")
    objXMLTW.WriteString(Request("txtName"))
    objXMLTW.WriteEndElement()
    objXMLTW.WriteEndDocument()
    objXMLTW.Flush()
    objXMLTW.Close()
    Catch Ex As Exception
    Dim MessageBox As MsgBoxResult
    MessageBox = "The following error occurred: " & Ex.Message
    End Try
    End Sub
    </script>
    <html xmlns="http://www.w3.org/1999/xhtml" >
    <head id="Head2" runat="server">
    <title>Untitled Page</title>
    </head>
    <body>
    <form id="form1" runat="server">
    <div>
    <asp:Button ID="btnWriteXML" runat="server" Text="Button" />
    <asp:TextBox ID="txtName" runat="server"></asp:TextBox></div>
    </form>
    </body>
    </html>


    On Jun 8, 3:14 pm, Alexey Smirnov <> wrote:
    > On Jun 8, 5:42 pm, slinky <> wrote:
    >
    > > That makes sense...... also along the lines of XML editing, etc. If I
    > > had an .aspx form that I wanted to simply have three textboxes
    > > (corresponding to Author, Title, and Year as in your XML file), and a
    > > submit button... how could I setup the code/form so the user could
    > > enter a book and hit Submit and add that to the XML file? I don't want
    > > the list of books to be displayed though on this form. I've done this
    > > before in vb.net with an XML file for a desktop app, but not for
    > > an .aspx app. Any clues? Thanks!

    >
    > There are tons of articles and examples about that subject on the web
    >
    > For example:http://www.freevbcode.com/ShowCode.asp?ID=2789


    __________________________________________________________________
    Imports System.Data
    Imports System.Xml
    Public Class StepByStep2_4
    Dim xdd As XmlDataDocument
    Dim ds As DataSet
    Private Sub btnLoadXml_Click(ByVal sender As System.Object, ByVal
    e As System.EventArgs) Handles btnLoadXml.Click
    Dim xtr As XmlTextReader = _
    New XmlTextReader("C:\Documents and Settings\dcampbe\My
    Documents\Visual Studio 2005\Projects\310C02\310C02\Books.xml")
    xdd = New XmlDataDocument()
    ds = xdd.DataSet()
    ds.ReadXmlSchema(xtr)
    xtr.Close()
    xtr = New XmlTextReader("C:\Documents and Settings\dcampbe\My
    Documents\Visual Studio 2005\Projects\310C02\310C02\Books.xml")
    xtr.WhitespaceHandling = WhitespaceHandling.None
    xdd.Load(xtr)
    dgXML.DataSource = ds
    dgXML.DataMember = "Book"
    xtr.Close()
    End Sub
    Private Sub btnSave_Click(ByVal sender As System.Object, ByVal e
    As System.EventArgs) Handles btnSave.Click
    Dim xtw As XmlTextWriter = New XmlTextWriter("C:\Documents and
    Settings\dcampbe\My Documents\Visual Studio 2005\Projects
    \310C02\310C02\Books.xml", System.Text.Encoding.UTF8)
    xtw.Formatting = Formatting.Indented
    xdd.WriteTo(xtw)
    'Clean up
    xtw.Close()
    MessageBox.Show("The XML file has been successfully
    updated !")
    End Sub
    End Class
     
    slinky, Jun 11, 2007
    #9
  10. On Jun 11, 5:40 pm, slinky <> wrote:
    > I went to the site you listed for Writing to XML... I have put
    > together a form with a textbox and a button... my code is below... I
    > simply want a user to add a record to the XML file then hit the submit
    > button, but I can seem to get the plumbing right on this one. I get
    > several errors. I've been able to do not unsimilar things with XML for
    > desktop apps (see my code at very bottom) but ASP is really throwing
    > me! Thanks for any help... struggling still....


    Open the example I've sent you.

    Where did you found a HtmlTextWriter?

    Change it to XMLTextWriter.

    Add a reference to System.XML namespace

    <%@ Import Namespace="System.XML" %>

    and add an OnClick() event

    <asp:Button ID="btnWriteXML" runat="server" Text="Button"
    OnClick="btnWriteXML_OnClick" />
     
    Alexey Smirnov, Jun 11, 2007
    #10
  11. slinky

    slinky Guest

    In that example where is the XML file Applicant.xml in the
    downloaded...all I saw was menu.xml

    On Jun 11, 3:58 pm, Alexey Smirnov <> wrote:
    > On Jun 11, 5:40 pm, slinky <> wrote:
    >
    > > I went to the site you listed for Writing to XML... I have put
    > > together a form with a textbox and a button... my code is below... I
    > > simply want a user to add a record to the XML file then hit the submit
    > > button, but I can seem to get the plumbing right on this one. I get
    > > several errors. I've been able to do not unsimilar things with XML for
    > > desktop apps (see my code at very bottom) but ASP is really throwing
    > > me! Thanks for any help... struggling still....

    >
    > Open the example I've sent you.
    >
    > Where did you found a HtmlTextWriter?
    >
    > Change it to XMLTextWriter.
    >
    > Add a reference to System.XML namespace
    >
    > <%@ Import Namespace="System.XML" %>
    >
    > and add an OnClick() event
    >
    > <asp:Button ID="btnWriteXML" runat="server" Text="Button"
    > OnClick="btnWriteXML_OnClick" />
     
    slinky, Jun 11, 2007
    #11
  12. On Jun 11, 10:19 pm, slinky <> wrote:
    > In that example where is the XML file Applicant.xml in the
    > downloaded...all I saw was menu.xml
    >


    Brian, it contans two files: menu.xml and XML_DEMO.aspx

    XML_DEMO.aspx has an example of the code
     
    Alexey Smirnov, Jun 11, 2007
    #12
  13. slinky

    slinky Guest

    The following error occurred: Access to the path 'E:\kunden\homepages
    \26\d190091667\applicant.xml' is denied. I have the XML file in my
    correct place on the tree, and I can view its contents.


    On Jun 11, 4:22 pm, Alexey Smirnov <> wrote:
    > On Jun 11, 10:19 pm, slinky <> wrote:
    >
    > > In that example where is the XML file Applicant.xml in the
    > > downloaded...all I saw was menu.xml

    >
    > Brian, it contans two files: menu.xml and XML_DEMO.aspx
    >
    > XML_DEMO.aspx has an example of the code
     
    slinky, Jun 11, 2007
    #13
  14. On Jun 11, 10:36 pm, slinky <> wrote:
    > The following error occurred: Access to the path 'E:\kunden\homepages
    > \26\d190091667\applicant.xml' is denied. I have the XML file in my
    > correct place on the tree, and I can view its contents.


    'Access to the path is denied' means that your application has no
    access rights to update the file. To fix this, you can either add
    write permissions to ASPNET account, or move the xml file to a
    directory where you have a write access.

    Hope it helps
     
    Alexey Smirnov, Jun 11, 2007
    #14
  15. slinky

    slinky Guest

    How can I check the security of the XML file or change it or move it?
    I can view it in a browser and can display it in the (see successful
    code below) .aspx via the browser (?)
    The error notes the applicant.xml file.... should I have that as
    another xml file on my site in addition to menu.xml?

    Again this is the sample code from the website you sent:

    <%@ Page language="vb"%>
    <%@ Import Namespace="System.XML" %>
    <html><head>
    <script language="VB" runat="server" ID=Script1>
    Sub btnReadXML_OnClick(sender As Object, e As EventArgs)
    'Read and display existing file
    ReadXML(Server.MapPath("menu.xml"))
    End Sub
    Sub btnWriteXML_OnClick(sender As Object, e As EventArgs)
    Try
    Dim enc as Encoding
    'Create file, overwrite if exists
    'enc is encoding object required by constructor
    'It is null, so default encoding is used
    Dim objXMLTW as new XMLTextWriter(Server.MapPath("applicant.xml"),
    enc)
    objXMLTW.WriteStartDocument
    'Top level (Parent element)
    objXMLTW.WriteStartElement("Applicant")
    'Child elements, from request form
    objXMLTW.WriteStartElement("Name")
    objXMLTW.WriteString(Request("txtName"))
    objXMLTW.WriteEndElement
    objXMLTW.WriteStartElement("Address")
    objXMLTW.WriteString(Request("txtAddress"))
    objXMLTW.WriteEndElement
    objXMLTW.WriteStartElement("City")
    objXMLTW.WriteString(Request("txtCity"))
    objXMLTW.WriteEndElement
    objXMLTW.WriteStartElement("State")
    objXMLTW.WriteString(Request("txtState"))
    objXMLTW.WriteEndElement
    objXMLTW.WriteStartElement("Zip")
    objXMLTW.WriteString(Request("txtZip"))
    objXMLTW.WriteEndElement
    objXMLTW.WriteEndElement 'End top level element
    objXMLTW.WriteEndDocument 'End Document
    objXMLTW.Flush 'Write to file
    objXMLTW.Close
    'Display File Just Created
    ReadXML(Server.MapPath("applicant.xml"))
    Catch Ex as Exception
    lblXMLFile.Text = "The following error occurred: " & Ex.Message
    End Try
    End Sub
    Sub ReadXML(FileName as String)
    Try
    lblXMLFile.Text =""
    Dim objXMLTR as new XMLTextReader(FileName)
    dim sCategory as String
    dim bNested as Boolean
    dim sLastElement as String
    Dim sValue as String
    'Read method loops through the XML stream
    Do While objXMLTR.Read
    'Output elements and values
    'Look at output in browser and compare to menu.xml file to
    'see exactly what is being done
    If objXMLTR.NodeType = XMLNodeType.Element Then
    if bNested = True then
    if sCategory <> "" then sCategory = sCategory & " > "
    sCategory = sCategory & sLastElement
    End if
    bNested = True
    sLastElement = objXMLTR.Name
    Else If objXMLTR.NodeType = XMLNodeType.Text or _
    objXMLTR.NodeType = XMLNodeType.CData Then
    bNested = False
    sCategory = "<P>" & sCategory
    sValue = objXMLTR.value
    lblXMLFile.Text = lblXMLFile.Text & "<B>" & sCategory & _
    "<BR>" & sLastElement & "</B><BR>" & sValue
    sLastElement = ""
    sCategory = ""
    End if
    Loop
    objXMLTR.close
    Catch Ex as Exception
    lblXMLFile.Text = "The following error occurred: " & Ex.Message
    End Try
    End Sub
    </script>
    </head>
    <body>
    <center><b>XML Text Reader/Text Writer Demo</b></center>
    <form method="post" action="XML_DEMO.aspx" runat="server" ID=Form1>
    <table WIDTH = "100%">
    <tr>
    <TD width="50%" valign = top>
    Click below to read/parse the file "menu.xml".<p>
    <asp:Button id="btnReadXML" text="Read XML Document"
    OnClick="btnReadXML_onClick" runat="server" /><p>
    <asp:label id="lblXMLFile" runat="server" /></p>
    <asp:Button ID="Button1" runat="server" Text="Button"
    OnClick="btnWriteXML_OnClick" />
    </TD>
    <TD width="50%" valign = top>
    Complete the fields below to create and display the XML file
    "applicant.xml" (write permission for the Internet Anonymous user must
    be enabled)<P>
    <asp:Button id="btnWriteXML" text="Write XML Document"
    OnClick="btnWriteXML_onClick" runat="server" /><p><strong>Applicant</
    strong>
    <p><table><tr><td>
    Name:</td>
    <td><asp:Textbox id=txtName runat="server" width="200"
    visible="True"></asp:Textbox></td></tr>
    <tr><td>Address: </td>
    <td>
    <asp:Textbox id="txtAddress" runat="server" visible="True"
    width="200"/></td></tr>
    <tr><td>
    City: </td>
    <td>
    <asp:Textbox id=txtCity runat="server" width="200"
    visible="True"></asp:Textbox></td></tr>
    <tr><td>
    State: </td>
    <td>
    <asp:Textbox id=txtState runat="server" width="200" visible="True"
    MaxLength="2"></asp:Textbox></td></tr>
    <tr><td>
    Zip: </td>
    <td>
    <asp:Textbox id=txtZip runat="server" width="200"
    visible="True" maxlength="10"></asp:Textbox></td></tr>
    </table></p>
    </TD>
    </tr>
    </table>
    </form>
    </body></html>

    On Jun 11, 5:05 pm, Alexey Smirnov <> wrote:
    > On Jun 11, 10:36 pm, slinky <> wrote:
    >
    > > The following error occurred: Access to the path 'E:\kunden\homepages
    > > \26\d190091667\applicant.xml' is denied. I have the XML file in my
    > > correct place on the tree, and I can view its contents.

    >
    > 'Access to the path is denied' means that your application has no
    > access rights to update the file. To fix this, you can either add
    > write permissions to ASPNET account, or move the xml file to a
    > directory where you have a write access.
    >
    > Hope it helps
     
    slinky, Jun 12, 2007
    #15
  16. On Jun 12, 3:49 pm, slinky <> wrote:
    > How can I check the security of the XML file or change it or move it?
    > I can view it in a browser and can display it in the (see successful
    > code below) .aspx via the browser (?)
    > The error notes the applicant.xml file.... should I have that as
    > another xml file on my site in addition to menu.xml?
    >
    > Again this is the sample code from the website you sent:


    It's a matter of access rights, not a code.

    "Access to the path 'E:\kunden\homepages\26\d190091667\applicant.xml'
    is denied" means that ASP.NET cannot change the file located in 'E:
    \kunden\homepages\26\d190091667\'. Often it's a matter of permissions
    for a directory, so I think that you have no write access in the root
    directory of your web site. If you have an access to the directory
    properties on your server (for example with a web site management
    console), then check it. If you don't - check with your web hosting
    provider for questions about where you can have such access.

    You can open the xml-file in the browser, or read it using a code,
    because you don't need a write access for that.
     
    Alexey Smirnov, Jun 12, 2007
    #16
    1. Advertising

Want to reply to this thread or ask your own question?

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. vish
    Replies:
    2
    Views:
    1,734
    Steve C. Orr, MCSD
    Jul 16, 2003
  2. John M
    Replies:
    1
    Views:
    1,189
    Kumar Reddi
    May 29, 2005
  3. Replies:
    5
    Views:
    413
    Steve Sobol
    Oct 18, 2007
  4. news.rcn.com
    Replies:
    2
    Views:
    1,127
    Roedy Green
    Dec 10, 2007
  5. Erik Wasser
    Replies:
    5
    Views:
    464
    Peter J. Holzer
    Mar 5, 2006
Loading...

Share This Page