發(fā)發(fā)牢騷,關(guān)于ASP.NET讀取XML新聞的問題
2024-07-10 12:56:53
供稿:網(wǎng)友
 
單位需要更新一下以前的新聞系統(tǒng),需要與現(xiàn)代社會接軌,因此開始研究了一下xml來存儲新聞的方法。
找到了網(wǎng)上流傳的一段很有名的讀取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>設(shè)計制作.</p>
 </body>
</html>
關(guān)鍵的地方就是:
documentnavigator nav= new documentnavigator(xmldoc);
這句話怎么都不能解釋,郁悶了很久,找了最新的msdn lib結(jié)果找到一個2001年的msdn 雜志上面的一段話:
documentnavigator只能用于asp.net beta2,痛苦,找了老半天,這段所謂經(jīng)典的代碼竟然是過時的產(chǎn)品。
沒有辦法,只好從后一句想辦法,找
xsldoc.transform(nav,null,writer);
總算找到了transform這個函數(shù)的用法,
public xmlreader transform(
 xpathnavigator input,
 xsltargumentlist args
);
然后就開始找xpathnavigator,不錯,xmldocument自己就帶了一個createnavigator()函數(shù)。
總算大功告成。
修改后的代碼:
<%@ 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都沒有找到結(jié)果,還是要自己分析,希望這段代碼可以在google上讓以后的人找到,以方便日后學習asp.net的同好不用花費太多的時間來思考,可以盡快地找到答案。