发发牢骚,关于ASP.NET读取XML新闻的问题


单位需要更新一下以前的新闻系统,需要与现代社会接轨,因此开始研究了一下XML来存储新闻的方法。
找到了网上流传的一段很有名的读取XML文件作为新闻的方法,代码如下:

1@ Import Namespace="System"
1@ Page Language="C#" Debug="true" codepage="936"
1@ Import Namespace="System.IO" 
1@ Assembly Name="System.Xml" 
1@ Import Namespace="System.Xml.Xsl" 
 1<html>
 2<head>
 3<title>
 4</title>
 5<script language="c#" runat="server">   
 6public string xslt()   
 7{   
 8StringWriter writer = new StringWriter();   
 9  
10XmlDocument xmldoc= new XmlDocument();   
11xmldoc.Load(Server.MapPath(Request["name"] +".xml")); 
12
13> XslTransform xsldoc = new XslTransform();   
14>  xsldoc.Load(Server.MapPath("main.xsl")); 
15> 
16> DocumentNavigator nav= new DocumentNavigator(xmldoc);   
17>  xsldoc.Transform(nav,null,writer);   
18>    
19>  return writer.ToString(); 
20> 
21> }   
22>  </script>   
23&gt;  </head>   
24&gt;  <body>   
25&gt;  ```
26=xslt()

>

该程序由www.aspcool.com设计制作.

``` 关键的地方就是: 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" ``` ```

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

Published At
Categories with Web编程
Tagged with
comments powered by Disqus