.NET开发

本类阅读TOP10

·NHibernate快速指南(翻译)
·vs.net 2005中文版下载地址收藏
·【小技巧】一个判断session是否过期的小技巧
·VB/ASP 调用 SQL Server 的存储过程
·?dos下编译.net程序找不到csc.exe文件
·通过Web Services上传和下载文件
·学习笔记(补)《.NET框架程序设计(修订版)》--目录
·VB.NET实现DirectDraw9 (2) 动画
·VB.NET实现DirectDraw9 (1) 托管的DDraw
·建站框架规范书之——文件命名

分类导航
VC语言Delphi
VB语言ASP
PerlJava
Script数据库
其他语言游戏开发
文件格式网站制作
软件工程.NET开发
发发牢骚,关于ASP.NET读取XML新闻的问题

作者:未知 来源:月光软件站 加入时间:2005-2-28 月光软件站


单位需要更新一下以前的新闻系统,需要与现代社会接轨,因此开始研究了一下XML来存储新闻的方法。
找到了网上流传的一段很有名的读取XML文件作为新闻的方法,代码如下:
<%@ Import Namespace="System"%>
<%@ Page Language="C#" Debug="true" codepage="936"%>
<%@ Import Namespace="System.IO" %>
<%@ Assembly Name="System.Xml" %>
<%@ Import Namespace="System.Xml.Xsl" %>
<html>
 <head>
  <title>
  </title>
  <script language="c#" runat="server">
  public string xslt()
  {
  StringWriter writer = new StringWriter();
  
XmlDocument xmldoc= new XmlDocument();
xmldoc.Load(Server.MapPath(Request["name"] +".xml"));

XslTransform xsldoc = new XslTransform();
xsldoc.Load(Server.MapPath("main.xsl"));

DocumentNavigator nav= new DocumentNavigator(xmldoc);
xsldoc.Transform(nav,null,writer);

return writer.ToString();

}
  </script>
 </head>
 <body>
  <%=xslt()%>
  <p align="center">该程序由<a href="
http://www.aspcool.com">www.aspcool.com</a>设计制作.</p>

 </body>
</html>
关键的地方就是:
DocumentNavigator nav= new DocumentNavigator(xmldoc);
这句话怎么都不能解释,郁闷了很久,找了最新的MSDN Lib结果找到一个2001年的MSDN 杂志上面的一段话:
DocumentNavigator只能用于Asp.Net
Beta2,痛苦,找了老半天,这段所谓经典的代码竟然是过时的产品。
没有办法,只好从后一句想办法,找
xsldoc.Transform(nav,null,writer);
总算找到了Transform这个函数的用法,
public XmlReader Transform(
  
XPathNavigator input,
  
XsltArgumentList args
);
然后就开始找XPathNavigator,不错,XmlDocument自己就带了一个CreateNavigator()函数。
总算大功告成。

修改后的代码:
<%@ Import Namespace="System"%>
<%@ Page Language="C#" Debug="true" codepage="936"%>
<%@ Import Namespace="System.IO" %>
<%@ Assembly Name="System.Xml" %>
<%@ Import Namespace="System.Xml" %>
<%@ Import Namespace="System.Xml.Xsl" %>
<%@ Import Namespace="System.Xml.XPath" %>

<html>
 <head>
  <title>
  </title>
  <script language="c#" runat="server">
  public string xslt()
  {
  StringWriter writer = new StringWriter();
  
XmlDocument xmldoc= new XmlDocument();
xmldoc.Load(Server.MapPath(Request["name"] +".xml"));

XslTransform xsldoc = new XslTransform();
xsldoc.Load(Server.MapPath("main.xsl"));

XPathNavigator nav = xmldoc.CreateNavigator();

xsldoc.Transform(nav,null,writer);
return writer.ToString();

}
  </script>
 </head>

找了一个晚上的google都没有找到结果,还是要自己分析,希望这段代码可以在Google上让以后的人找到,以方便日后学习ASP.NET的同好不用花费太多的时间来思考,可以尽快地找到答案。




相关文章

相关软件