最近、私はRSSオンラインアグリゲーターを構築しています。ほとんどのRSS 2.0でエンコードされたXMLエンコードされた.NETコンパイラーはそれを正しく読み取ることができますが、GBKエンコードなどの一部のものは、たとえそのXMLを配置した場合でも.NETで読み取ることができません。エンコードを手動で「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 中国語 Web サイトの他の関連記事を参照してください。

RSSドキュメントは、頻繁に更新されるコンテンツを公開および購読するために使用されるXMLベースの構造化されたファイルです。その主な機能には、1)自動化されたコンテンツの更新、2)コンテンツの集約、3)ブラウジング効率の改善。 RSSFeedを通じて、ユーザーはタイムリーにさまざまなソースから最新情報を購読および取得できます。

RSSのXML構造には、1。XML宣言とRSSバージョン、2。チャネル(チャネル)、3。アイテムが含まれます。これらの部品はRSSファイルの基礎を形成し、XMLデータを解析することにより、ユーザーがコンテンツ情報を取得および処理できるようにします。

rssfeedsusexmltosyndicatecontent; parsingtheminvolvesloadingxml、navigating structure、and extractingdata.applicationsincludebuildingnewsaggretationsandtrackingpodcastepisodes。

RSSドキュメントは、XMLファイルを介してコンテンツの更新を公開することで機能し、ユーザーはRSSリーダーを介して通知をサブスクライブして受信します。 1。コンテンツパブリッシャーは、RSSドキュメントを作成および更新します。 2。RSSリーダーは、XMLファイルに定期的にアクセスして解析します。 3.ユーザーは、更新されたコンテンツを閲覧および読み取ります。使用例:TechCrunchのRSSフィードを購読するには、RSSリーダーへのリンクをコピーするだけです。

XMLを使用してRSSFeedを構築する手順は次のとおりです。1。ルート要素を作成してバージョンを設定します。 2.チャネル要素とその基本情報を追加します。 3.タイトル、リンク、説明を含むエントリ要素を追加します。 4. XML構造を文字列に変換して出力します。これらの手順を使用すると、有効なRSSFeedをゼロから作成し、リリース日や著者情報などの追加要素を追加することにより、機能を強化できます。

RSSドキュメントを作成する手順は次のとおりです。1。要素を含むルート要素を使用して、XML形式で書き込みます。 2。チャネル情報を説明する要素など。 3.要素を追加します。それぞれがコンテンツエントリを表します。 4.オプションで、コンテンツを濃縮するための要素を追加します。 5. XML形式が正しいことを確認し、オンラインツールを使用してパフォーマンスを最適化し、コンテンツを更新します。

RSSにおけるXMLの中心的な役割は、標準化された柔軟なデータ形式を提供することです。 1. XMLの構造とマークアップ言語の特性により、データ交換とストレージに適しています。 2。RSSはXMLを使用して標準化された形式を作成して、コンテンツの共有を容易にします。 3. RSSでのXMLの適用には、タイトルやリリース日などのフィードコンテンツを定義する要素が含まれます。 4.利点には標準化とスケーラビリティが含まれ、課題にはドキュメントの冗長および厳密な構文要件が含まれます。 5.ベストプラクティスには、XMLの有効性の検証、シンプルな状態を維持し、CDATAの使用、定期的に更新されます。

rssfeedsarexmldocumentsusedforcontentaggregationanddistribution.totransformthemintoreadablecontent:1)parsethexmlusinglibrarieslibrarieslibrarieslibrarieslibrarieslibrarieslibrarieslibraries.2)heandlederentrssiversions andpotentialparsingerrors.3)変換された拡張型拡張型のfienderidederidrederidederidederidedionderiondiontiontiontiontiontiontiontiontional


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

WebStorm Mac版
便利なJavaScript開発ツール

SublimeText3 Linux 新バージョン
SublimeText3 Linux 最新バージョン

AtomエディタMac版ダウンロード
最も人気のあるオープンソースエディター

SublimeText3 英語版
推奨: Win バージョン、コードプロンプトをサポート!

SAP NetWeaver Server Adapter for Eclipse
Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。
