用ASP.NET和XML做的新聞系統
2024-07-10 12:59:34
供稿:網友
 
這里我就用xml代替數據,寫一個新聞發布系統,希望能夠起到拋磚引玉的作用,使更多的人能夠了解這些最新的技術。下面介紹這幾個文件。 
contents.xml 
<?xml version="1.0" encoding="gb2312"?> 
<topiclist type="aspcool news"> 
<topic> 
<title>aspcool news!</title> 
<href>main.aspx?name=hello</href> 
</topic> 
<topic> 
<title>resolve a problem</title> 
<href>main.aspx?name=test</href> 
</topic> 
</topiclist> 
  這是一個很簡單的xml文件,它的作用是用來顯示新聞的列表。 
hello.xml 
<?xml version="1.0" encoding="gb2312"?> 
<document> 
<title>aspcool news!</title> 
<abstract>test news</abstract> 
<author>feiying</author> 
<content> 
<paragraph>the firet test</paragraph> 
</content> 
</document> 
  這個文件是用來顯示新聞的內容,其中各個意思大家一看就明白,我就不在這兒多說了。
  下面給大家看新聞列表顯示的頁面。 
news.aspx 
<%@ 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" %> 
<html> 
<head> 
<title> 
</title> 
<script language="c#" runat="server"> 
public string xslt() 
{ 
stringwriter writer = new stringwriter(); 
//裝入xml對象 
xmldocument xmldoc= new xmldocument(); 
xmldoc.load(server.mappath("contents.xml")); 
//裝入xsl對象 
xsltransform xsldoc = new xsltransform(); 
xsldoc.load(server.mappath("news.xsl")); 
//把xml轉化成html頁面 
documentnavigator nav= new documentnavigator(xmldoc); 
xsldoc.transform(nav,null,writer); 
return writer.tostring(); 
} 
</script> 
</head> 
<body> 
<%=xslt()%> 
<p align="center"> 
  該程序由<a href="www.aspcool.comhttp://www.aspcool.com">www.aspcool.com</a>設計制作.
</p> 
</body> 
</html> 
  這個頁面完成了從xml通過xslt轉化成html文件,也使我對于xslt有了進一步的認識。 
  下面是新聞內容顯示的頁面: 
main.aspx 
<%@ 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" %> 
<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="www.aspcool.comhttp://www.aspcool.com">www.aspcool.com</a>設計制作.</p> 
</body> 
</html> 
  這個功能和上面的一樣,我在這兒就不多說了。 
  最后,大家來看一下最負責的一個頁面,這個頁面的作用就是用來建立新的xml數據。
manage.aspx 
<%@ import namespace="system.xml.xsl" %> 
<%@ import namespace="system.xml" %> 
<%@ assembly name="system.xml" %> 
<%@ import namespace="system.io" %> 
<%@ page language="c#" debug="true" codepage="936"%> 
<%@ import namespace="system"%> 
<html> 
<head> 
<script language="c#" runat="server"> 
public void button1_click(object sender, system.eventargs e) 
{ 
//判斷文件是否存在 
if(file.exists(server.mappath(textbox1.text +".xml"))) 
{ 
response.write("文件名已經存在,請重選文件名。"); 
response.end() ; 
} 
else 
{ 
xmlnode currnode; 
xmldocument xmldoc = new xmldocument(); 
xmldoc.load(server.mappath("contents.xml")); 
string insstr="<topic><title>"+textbox2.text+"</title><href>
main.aspx?name="+textbox1.text+"</href></topic>"; 
xmldocumentfragment docfrag = xmldoc.createdocumentfragment(); 
docfrag.innerxml = insstr; 
currnode = xmldoc.documentelement; 
currnode.insertafter(docfrag, currnode.lastchild); 
//save the output to a file 
xmldoc.save (server.mappath("contents.xml")); 
//把textbox5中的文件換成符合xml格式的內容。 
string xmlfile =textbox5.text.replace("&","&"); 
xmlfile = xmlfile.replace("<","<"); 
xmlfile = xmlfile.replace(">",">"); 
xmlfile = xmlfile.replace( @"""""","""); 
xmlfile = xmlfile.replace(""","'"); 
xmlfile = xmlfile.replace ("/n","</paragraph><paragraph>"); 
//把數據寫入新建的xml文件中去。 
xmldocument doc = new xmldocument(); 
doc.loadxml ("<?xml version="1.0" encoding="gb2312"?>
<document><title>"+textbox2.text +"</title><abstract>"+
textbox4.text "</abstract><author>"+textbox3.text+
"</author><content><paragraph>"+xmlfile+"</paragraph>
</content></document>"); 
doc.save (server.mappath(textbox1.text +".xml")); 
response.write("you hava input the article!"); 
textbox1.text=""; 
textbox2.text=""; 
textbox3.text=""; 
textbox4.text=""; 
textbox5.text=""; 
} 
//向目錄文件中寫數據 
} 
public void button2_click(object sender, system.eventargs e) 
{} 
</script> 
<meta content="internet explorer 5.0" name=vs_targetschema> 
<meta content="microsoft visual studio 7.0" name=generator> 
<meta content=c# name=code_language> 
</head> 
<body ms_positioning="gridlayout"> 
<form runat="server"> 
<font face=宋體> 
<asp:label id=label1 style="z-index: 100; left: 230px; position:
absolute; top: 27px" runat="server" height="28px" width="156px"> 
asp酷技術資訊網網站內容發布系統 
</asp:label> 
<asp:label id=label2 style="z-index: 101; left: 110px; position: 
absolute; top: 68px" runat="server" height="25px" width="65px"> 
文件名: 
</asp:label> 
<asp:textbox id=textbox1 style="z-index: 102; left: 255px; position: 
absolute; top: 64px" runat="server" height="33px" width="178px" > 
</asp:textbox> 
<asp:label id=label3 style="z-index: 103; left: 108px; position: 
absolute; top: 126px" runat="server" height="36px" width="86px"> 
文章名稱: 
</asp:label> 
<asp:textbox id=textbox2 style="z-index: 104; left: 256px; position: 
absolute; top: 114px" runat="server" height="37px" width="177px"> 
</asp:textbox> 
<asp:label id=label4 style="z-index: 105; left: 114px; position: 
absolute; top: 183px" runat="server" height="31px" width="89px"> 
作者: 
</asp:label> 
<asp:textbox id=textbox3 style="z-index: 106; left: 256px; position: 
absolute; top: 183px" runat="server" height="36px" width="179px"> 
</asp:textbox> 
<asp:label id=label5 style="z-index: 107; left: 114px; position: 
absolute; top: 241px" runat="server" height="51px" width="81px"> 
摘要: 
</asp:label> 
<asp:textbox id=textbox4 style="z-index: 108; left: 256px; position: 
absolute; top: 245px" runat="server" height="36px" width="179px"> 
</asp:textbox> 
<asp:label id=label6 style="z-index: 109; left: 116px; position: 
absolute; top: 315px" runat="server" height="36px" width="78px"> 
內容: 
</asp:label> 
<asp:textbox id=textbox5 style="z-index: 110; left: 259px; position: 
absolute; top: 303px" runat="server" height="95px" width="252px" 
textmode="multiline"> 
</asp:textbox> 
</font> 
<input id=button2 style="z-index: 113; left: 343px; width: 40px; 
position: absolute; top: 430px; height: 24px" type=button value=重置 
name=button2 runat="server" onserverclick="button2_click" designtimedragdrop="59"> 
<br> 
<br> 
<div id=mess runat=server> 
</div> 
<br> 
<input type="button" value="提交" onserverclick="button1_click" 
runat="server" id="button1" name="button1" style="z-index: 112;
left: 268px; position: absolute; top: 430px"> 
</form> 
</body> 
</html> 
 
  此程序在.net beta2 build 9148下測試通過。