xml 留言板

这篇博客介绍了如何创建一个基本的XML留言板,包括接受用户输入并保存到XML文件,以及使用XSLT技术将XML数据转换为HTML进行显示。在`SaveXMLData`方法中,XML文档被用来存储用户信息,然后保存到`guestbook.xml`。在`Page_Load`方法中,XSLT被用来加载XML文件和对应的XSL样式表,将XML数据转换为HTML并显示在`ViewGuestBook.aspx`页面上。

一个基本的留言簿应至少包括两个功能:接受用户输入的信息并保存该信息到后台数据库;显示用户输入的信息。

private void SaveXMLData()
{
try
{
// 创建一个XmlDocument对象,用于载入存储信息的XML文件
XmlDocument xdoc = new XmlDocument();
xdoc.Load( Server.MapPath( "guestbook.xml" ));
// 创建一个新的guest节点并将它添加到根节点下
XmlElement parentNode = xdoc.CreateElement( "guest" );
xdoc.DocumentElement.PrependChild( parentNode );
// 创建所有用于存储信息的节点
XmlElement nameNode = xdoc.CreateElement( "name" );
XmlElement emailNode = xdoc.CreateElement( "email" );
XmlElement qqNode = xdoc.CreateElement( "qq" );
XmlElement homepageNode = xdoc.CreateElement( "homepage" );
XmlElement commentNode = xdoc.CreateElement( "comment" );
// 获取文本信息
XmlText nameText = xdoc.CreateTextNode( name.Text );
XmlText emailText = xdoc.CreateTextNode( email.Text );
XmlText qqText = xdoc.CreateTextNode( qq.Text );
XmlText homepageText = xdoc.CreateTextNode( homepage.Text );
XmlText commentText = xdoc.CreateTextNode( comment.Text );
// 将上面创建的各个存储信息的节点添加到guest节点下但并不包含最终的值
parentNode.AppendChild( nameNode );
parentNode.AppendChild( emailNode );
parentNode.AppendChild( qqNode );
parentNode.AppendChild( homepageNode );
parentNode.AppendChild( commentNode );
// 将上面获取的文本信息添加到与之相对应的节点中
nameNode.AppendChild( nameText );
emailNode.AppendChild( emailText );
qqNode.AppendChild( qqText );
homepageNode.AppendChild( homepageText );
commentNode.AppendChild( commentText );
// 保存存储信息的XML文件
xdoc.Save( Server.MapPath( "guestbook.xml" ));
// 显示所有用户的留言信息
Response.Redirect( "ViewGuestBook.aspx" );
}
catch( Exception e ) {}
}

下面我们来创建用于显示所有用户输入信息的页面-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() );
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值