ASP.NET Tutorial/XML/XMLDocument
Append data to an XML file (VB.net)
<source lang="csharp">
<%@ Page Language="VB" %> <%@ Import Namespace="System.Xml" %> <script runat=server>
sub Page_Load(Sender as Object, e as EventArgs) dim xmldoc as new XMLDocument() try xmldoc.Load(Server.MapPath("Data.xml")) dim eleBook as XmlElement = xmldoc.CreateElement("book") dim attStyle as XmlAttribute = xmldoc.CreateAttribute("style") eleBook.SetAttributeNode(attStyle) eleBook.SetAttribute("style", "hardcover") dim root as XmlElement = xmldoc.Item("bookstore") root.AppendChild(eleBook) xmldoc.Save(Server.MapPath("Data.xml")) output.Text = "Append operation successful" catch ex as Exception output.Text = "Error accessing XML file" end try end sub
</script> <html><body>
<asp:Label id="output" runat="server" />
</body></html>
File: Data.xml <?xml version="1.0"?> <bookstore>
<book genre="asdf"> <title>asdf</title> <author> <first-name>asdf</first-name> <last-name>asdf</last-name> </author> <price>asdf</price> </book> <book genre="asdf"> <title>asdf</title> <author> <first-name>asdf</first-name> <last-name>asdf</last-name> </author> <price>asdf</price> </book> <book genre="asdf"> <title>asdf</title> <author> <first-name>asdf</first-name> <last-name>asdf</last-name> </author> <price>asdf</price> </book>
</bookstore></source>
Recursively load XML document with DOM
<source lang="csharp">
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="XmlDOM" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" > <head runat="server">
<title>Untitled Page</title>
</head> <body>
<form id="form1" runat="server">
<asp:Literal id="XmlText" runat="server"></asp:Literal>
</form>
</body> </html> File: Default.aspx.cs using System; using System.Data; using System.Configuration; using System.Collections; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Web.UI.HtmlControls; using System.Xml; using System.Text; public partial class XmlDOM : System.Web.UI.Page {
protected void Page_Load(object sender, EventArgs e) { string xmlFile = Server.MapPath("Data.xml"); XmlDocument doc = new XmlDocument(); doc.Load(xmlFile); XmlText.Text = GetChildNodesDescr(doc.ChildNodes, 0); } private string GetChildNodesDescr(XmlNodeList nodeList, int level) { string indent = ""; for (int i = 0; i < level; i++) indent += " "; StringBuilder str = new StringBuilder(""); foreach (XmlNode node in nodeList) { switch (node.NodeType) { case XmlNodeType.XmlDeclaration: str.Append("XML Declaration: "); str.Append(node.Name); str.Append(" "); str.Append(node.Value); str.Append("
"); break; case XmlNodeType.Element: str.Append(indent); str.Append("Element: "); str.Append(node.Name); str.Append("
"); break; case XmlNodeType.Text: str.Append(indent); str.Append(" - Value: "); str.Append(node.Value); str.Append("
"); break; case XmlNodeType.rument: str.Append(indent); str.Append("Comment: "); str.Append(node.Value); str.Append("
"); break; } if (node.Attributes != null) { foreach (XmlAttribute attrib in node.Attributes) { str.Append(indent); str.Append(" - Attribute: "); str.Append(attrib.Name); str.Append(" Value: "); str.Append(attrib.Value); str.Append("
"); } } if (node.HasChildNodes) str.Append(GetChildNodesDescr(node.ChildNodes, level + 1)); } return str.ToString(); }
} File: Data.xml <?xml version="1.0"?> <DvdList>
<DVD ID="1" Category="Category 1"> <Title>title 1</Title> <Director>directory 2</Director> <Price>1</Price> <Starring> <Star>star 1</Star> <Star>star 2</Star> </Starring> </DVD> <DVD ID="2" Category="Category 2"> <Title>title 2</Title> <Director>directory 2</Director> <Price>2</Price> <Starring> <Star>star 3</Star> <Star>star 4</Star> </Starring> </DVD>
</DvdList></source>