1 private void Page_Load(object sender, System.EventArgs e)2 {3 rssRepeater.DataSource = ReturnReadResult( Request[ "url" ] );4 rssRepeater.DataBind( );5 }67 private DataTable ReturnReadResult( string rssUrl )8 {9 //构在DataTable表格10 DataTable dt = CreateDataTable();11 DataRow dr;1213 try 14 {15 Xmldocument xml = new Xmldocument();1617 //正常加载完全合格的RSS 2.0文件18 try19 {20 xml.LoadXml( rssUrl );21 }22 catch23 {24 //下面的措施 针对一些特别的RSS 2.0文件,比如下面的一个站点:25 //site :http://www.csdn.net/rss/rssfeed.aspx? rssid=1&bigclassid=1426 //按照常规是无法正 常加载的。需要进一步处理。比如一些.NET暂时不支持的编码,目前可以读取所 知的RSS 2.027 rssUrl = "http://soft.yesky.com/index.xml";28 System.Net.WebRequest wr = System.Net.WebRequest.Create( rssUrl );29 System.Net.WebResponse srp = wr.GetResponse ();30 //加入了把原先编码都转化成了2312gb形式。 31 StreamReader sr = new StreamReader( srp.GetResponseStream() ,System.Text.Encoding.GetEncoding( "gb2312" ));3233 xml.LoadXml( sr.ReadToEnd( ).Trim( ) );34 sr.Close();35 srp.Close();36 }3738 //读取总标题信息,可以判断是否有图片展示39 try40 {41 titleLabel.Text = xml.SelectSingleNode ("/rss/channel/title").InnerText42 + "
"45 + "
"48 + xml.SelectSingleNode ("/rss/channel/description").InnerText49 + "
"50 + xml.SelectSingleNode("/rss/channel/link").InnerText;51 }52 catch53 {54 try55 {56 titleLabel.Text = xml.SelectSingleNode ("/rss/channel/title").InnerText57 + "
"58 + xml.SelectSingleNode("/rss/channel/description").InnerText59 + "
"60 + xml.SelectSingleNode ("/rss/channel/link").InnerText;61 }62 catch63 {64 //假如没有频道进行说明的情况下65 titleLabel.Text = xml.SelectSingleNode ("/rss/channel/title").InnerText66 + "
"67 + xml.SelectSingleNode("/rss/channel/link").InnerText;68 }69 }7071 XmlNodeList nodes = xml.SelectNodes("//item");7273 foreach( XmlNode item in nodes )74 {75 dr = dt.NewRow();76 foreach( XmlNode child in item.ChildNodes )77 {7879 switch( child.Name )80 {81 case "title":82 dr[ "title" ] = child.InnerText;83 break;84 case "link":85 dr[ "link" ] = child.InnerText;86 break;87 case "author":88 dr[ "author" ] = child.InnerText;89 break;90 case "guid":91 dr[ "guid" ] = child.InnerText;92 break;93 case "category":94 dr[ "category" ] = child.InnerText;95 break;96 case "pubDate":97 dr[ "pubDate" ] = child.InnerText;98 break;99 case "description":100 dr[ "description" ] = child.InnerText;101 break;102 case "comments":103 dr[ "comments" ] = child.InnerText;104 break;105 }106 }107 dt.Rows.Add( dr );108 }109 return dt;110 } 111 catch ( Exception ex )112 {113 Response.Write( ex.ToString( ) );114 return null;115 }116 }117118//手动创立一个DataTable119 private DataTable CreateDataTable()120 {121 DataTable dt = new DataTable();122 DataColumn dc;123124 System.Type type;125 type = System.Type.GetType("System.String");126127 dc = new DataColumn( "title",type );128 dt.Columns.Add( dc );129130 dc = new DataColumn( "link", type );131 dt.Columns.Add( dc );132133 dc = new DataColumn( "author", type );134 dt.Columns.Add( dc );135136 dc = new DataColumn( "guid", type );137 dc.DefaultValue = "";138 dt.Columns.Add( dc );139140 dc = new DataColumn( "category", type );141 dc.AllowDBNull = true;142 dt.Columns.Add( dc );143144 dc = new DataColumn( "pubDate", type );145 dt.Columns.Add( dc );146147 dc = new DataColumn( "description", type );148 dc.AllowDBNull = true;149 dt.Columns.Add( dc );150151 dc = new DataColumn( "comments", type );152 dc.AllowDBNull = true;153 dt.Columns.Add( dc );154155 return dt;156 }这样处理后,可以读取大 部分的RSS 2.0连接。
至于处理本地的文件使用StreamReader流转化编码 ,一样的处理。
其核心就是使用流转换编码。
以上就是Xmldocument XML编码转换的示例代码分享的详细内容,更多请关注考高分网其它相关文章!



