最近做一个RSS在线聚合器,大部分RSS 2.0编码的XML编码.NET编译器都可以 正确读取,可是一些比如GBK编码,我们的.NET就读取不了,如果把那个XML的编 码手动改变成“gb2312”或者其它编码,也是读取不了。不过编码改 变不改变,IE都是可以正确查看的。下面怎么办,确实难住我了。改变编码怎么 样?我的RSS在线聚合器要读取的RSS 2.0文件不是下载到本地的文件,而是在线 阅读。那好,得到连接后,使用流可以很好的得到正确编码的XML流。下面见代码 啦:
1 private void Page_Load(object sender, System.EventArgs e) 2 { 3 rssRepeater.DataSource = ReturnReadResult( Request[ "url" ] ); 4 rssRepeater.DataBind( ); 5 } 6 7 private DataTable ReturnReadResult( string rssUrl ) 8 { 9 //构在DataTable表格 10 DataTable dt = CreateDataTable(); 11 DataRow dr; 12 13 try 14 { 15 XmlDocument xml = new XmlDocument(); 16 17 //正常加载完全合格的RSS 2.0文件 18 try 19 { 20 xml.LoadXml( rssUrl ); 21 } 22 catch 23 { 24 //下面的措施 针对一些特别的RSS 2.0文件,比如下面的一个站点: 25 //site :http://www.csdn.net/rss/rssfeed.aspx? rssid=1&bigclassid=14 26 //按照常规是无法正 常加载的。需要进一步处理。比如一些.NET暂时不支持的编码,目前可以读取所 知的RSS 2.0 27 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" )); 32 33 xml.LoadXml( sr.ReadToEnd( ).Trim( ) ); 34 sr.Close(); 35 srp.Close(); 36 } 37 38 //读取总标题信息,可以判断是否有图片展示 39 try 40 { 41 titleLabel.Text = xml.SelectSingleNode ("/rss/channel/title").InnerText 42 + "<br><a href = " 43 + xml.SelectSingleNode("//image/link").InnerText 44 + ">" 45 + "<img src=" 46 + xml.SelectSingleNode("//image/url").InnerText 47 + " border = no></a><br>" 48 + xml.SelectSingleNode ("/rss/channel/description").InnerText 49 + "<br>" 50 + xml.SelectSingleNode("/rss/channel/link").InnerText; 51 } 52 catch 53 { 54 try 55 { 56 titleLabel.Text = xml.SelectSingleNode ("/rss/channel/title").InnerText 57 + "<br>" 58 + xml.SelectSingleNode("/rss/channel/description").InnerText 59 + "<br>" 60 + xml.SelectSingleNode ("/rss/channel/link").InnerText; 61 } 62 catch 63 { 64 //假如没有频道进行说明的情况下 65 titleLabel.Text = xml.SelectSingleNode ("/rss/channel/title").InnerText 66 + "<br>" 67 + xml.SelectSingleNode("/rss/channel/link").InnerText; 68 } 69 } 70 71 XmlNodeList nodes = xml.SelectNodes("//item"); 72 73 foreach( XmlNode item in nodes ) 74 { 75 dr = dt.NewRow(); 76 foreach( XmlNode child in item.ChildNodes ) 77 { 78 79 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 } 117 118//手动创立一个DataTable 119 private DataTable CreateDataTable() 120 { 121 DataTable dt = new DataTable(); 122 DataColumn dc; 123 124 System.Type type; 125 type = System.Type.GetType("System.String"); 126 127 dc = new DataColumn( "title",type ); 128 dt.Columns.Add( dc ); 129 130 dc = new DataColumn( "link", type ); 131 dt.Columns.Add( dc ); 132 133 dc = new DataColumn( "author", type ); 134 dt.Columns.Add( dc ); 135 136 dc = new DataColumn( "guid", type ); 137 dc.DefaultValue = ""; 138 dt.Columns.Add( dc ); 139 140 dc = new DataColumn( "category", type ); 141 dc.AllowDBNull = true; 142 dt.Columns.Add( dc ); 143 144 dc = new DataColumn( "pubDate", type ); 145 dt.Columns.Add( dc ); 146 147 dc = new DataColumn( "description", type ); 148 dc.AllowDBNull = true; 149 dt.Columns.Add( dc ); 150 151 dc = new DataColumn( "comments", type ); 152 dc.AllowDBNull = true; 153 dt.Columns.Add( dc ); 154 155 return dt; 156 }
这样处理后,可以读取大 部分的RSS 2.0连接。
至于处理本地的文件使用StreamReader流转化编码 ,一样的处理。
其核心就是使用流转换编码。
以上是XmlDocument XML编码转换的示例代码分享的详细内容。更多信息请关注PHP中文网其他相关文章!

XML在RSS中具有结构化数据、可扩展性、跨平台兼容性和解析验证的优势。1)结构化数据确保内容的一致性和可靠性;2)可扩展性允许添加自定义标签以适应内容需求;3)跨平台兼容性使其在不同设备上无缝工作;4)解析和验证工具确保Feed的质量和完整性。

RSS在XML中的实现方式是通过结构化的XML格式来组织内容。1)RSS使用XML作为数据交换格式,包含频道信息和项目列表等元素。2)生成RSS文件需按规范组织内容,发布到服务器供订阅。3)RSS文件可通过阅读器或插件订阅,实现内容自动更新。

RSS的高级功能包括内容命名空间、扩展模块和条件订阅。1)内容命名空间扩展RSS功能,2)扩展模块如DublinCore或iTunes添加元数据,3)条件订阅根据特定条件筛选条目。这些功能通过添加XML元素和属性实现,提升信息获取效率。

rssfeedsusexmltoStructureContentUpdates.1)xmlProvidesHierarchicalStructurefordata.2)theelementDefinestHefEed'sIdentityAndContainsElements.3)ElementsRementsRementsRepresSentividividividualContentpieces.4)rsssissisexisextensible,允许custemements.5)5)

RSS和XML是用于网络内容管理的工具。RSS用于发布和订阅内容,XML用于存储和传输数据。它们的工作原理包括内容发布、订阅和更新推送。使用示例包括RSS发布博客文章和XML存储书籍信息。

RSS文档是基于XML的结构化文件,用于发布和订阅频繁更新的内容。它的主要作用包括:1)自动化内容更新,2)内容聚合,3)提高浏览效率。通过RSSfeed,用户可以订阅并及时获取来自不同来源的最新信息。

RSS的XML结构包括:1.XML声明和RSS版本,2.频道(Channel),3.条目(Item)。这些部分构成了RSS文件的基础,允许用户通过解析XML数据来获取和处理内容信息。

RSSFEEDSUSEXMLTOSYNDICATECONTENT; PARSINGTHEMINVOLVESLOADINGINGINGINGINSSTRUCTURE,andExtractingData.ApplicationsIncludeBuildBuildingNewSagGregatorSaterNewSagGregatorSator andTrackingPodcastepodcastepisodes。


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

SublimeText3 Linux新版
SublimeText3 Linux最新版

Atom编辑器mac版下载
最流行的的开源编辑器

SecLists
SecLists是最终安全测试人员的伙伴。它是一个包含各种类型列表的集合,这些列表在安全评估过程中经常使用,都在一个地方。SecLists通过方便地提供安全测试人员可能需要的所有列表,帮助提高安全测试的效率和生产力。列表类型包括用户名、密码、URL、模糊测试有效载荷、敏感数据模式、Web shell等等。测试人员只需将此存储库拉到新的测试机上,他就可以访问到所需的每种类型的列表。

SublimeText3汉化版
中文版,非常好用

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)