|
ASP.Net+XML打造留言薄(3) commentNode.AppendChild( commentText );
// 保存存储信息的XML文件 xdoc.Save( Server.MapPath( "guestbook.xml" ));
// 显示所有用户的留言信息 Response.Redirect( "ViewGuestBook.aspx" ); } catch( Exception e ) {} }
该方法主要运用了XmlDocument类、XmlElement类以及XmlText类等,这些类都是包含在System.Xml命名空间中的,所以请在代码文件的开头处添加using System.Xml的语句。该方法运用了一个try-catch语句块,在try部分首先通过创建一个XmlDocument对象来载入XML文件,然后创建根节点的儿子-guest节点并在guest节点下添加存储信息所必须的五个子节点。所有这些子节点都是XmlElement对象,它们是通过XmlDocument对象的CreateElement()方法来获取的。同时,XmlDocument对象还通过CreateTextNode()方法来获取文本信息并在后面将其添加到相对应的节点中。在合理的添加guest节点及其子节点以及文本信息后,XmlDocument对象通过Save()方法将用户输入的信息保存到XML文件中。最后,浏览器会导向到显示所有用户输入信息的页面。这样,该Web页面运行的效果如图2所示:

图2
下面我们来创建用于显示所有用户输入信息的页面-ViewGuestBook.aspx。在该Web页面中,我们要运用到XSLT技术,它能将前面创建的XML文件中的数据以HTML的形式显示出来。由于是运用XSLT技术显示用户输入信息的,所以在设计该Web页面时我们无需添加任何Web控件,只要重载该Web页面的Load()方法即可。
private void Page_Load(object sender, System.EventArgs e) { // 创建一个XmlDocument对象以载入存储信息的XML文件 XmlDocument xdoc = new XmlDocument(); xdoc.Load( Server.MapPath( "guestbook.xml" ));
// 创建一个XslTransform对象并导入XSL文件 XslTransform xslt = new XslTransform(); xslt.Load( Server.MapPath( "guestbook.xsl" ));
string xmlQuery = "//guestbook"; XmlNodeList nodeList = xdoc.DocumentElement.SelectNodes( xmlQuery );
MemoryStream ms = new MemoryStream(); xslt.Transform( xdoc, null, ms ); ms.Seek( 0, SeekOrigin.Begin );
StreamReader sr = new StreamReader( ms );
// 显示输出结果 Response.Write( sr.ReadToEnd() ); }
该方法首先创建一个XmlDocument对象用于载入前面创建的XML数据文件,之后创建一个XslTransform对象并导入相应的XSL文件。通过该XSL文件中的内容它能将原来的XML文件中的数据格式化为HTML的形式并显示在浏览器中。因为其中运用到了XSLT转换,所以我们还得在代码文件的开头处添加using System.Xml.Xsl的语句。
下面便是XSL文件的源代码,其中最重要的部分是<xsl:template match="name">……</xsl:template>一块。
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
|