XmlDocument XML编码转换的示例代码分享【XML教程】,XmlDocument ,XML,编码转换
作者:搜教程发布时间:2019-12-01分类:XML教程浏览:33评论:0
导读:近来做一个RSS在线聚合器,大部份RSS2.0编码的XML编码.NET编译器都能够准确读取,但是一些比方GBK编码,我们的.NET就读取不了,如果把谁人XML的编码手动转变成...
近来做一个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编码转换的示例代码分享的细致内容,更多请关注ki4网别的相干文章!
相关推荐
- XML编程-SAX【XML教程】,XML,SAX
- 您相识XML么?它是做什么用的?【XML教程】,XML
- DTD和XSD在XML中的区分以及运用详解【XML教程】,DTD,XSD,XML
- 细致引见XML和JSON区分【XML教程】,XML,JSON
- 用Java剖析XML文件的代码示例【XML教程】,Java,XML
- jscript和vbscript对XML元素属性举行操纵的要领【XML教程】,jscript,vbscript,XML,操作XML元素属性
- 把SQL Server中的数据导出为XML和Json的要领剖析【XML教程】,SQL Server,XML,Json
- XSD与XML的检测示例代码【XML教程】,XSD,XML,检测
- Qt剖析XML的示例代码分享【XML教程】,Qt,XML
- XML的疾速入门教程【XML教程】,XML,快速入门
你 发表评论:
欢迎- XML教程排行
- 最新文章
- 广而告之