旗下导航:搜·么
当前位置:网站首页 > XML教程 > 正文

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网别的相干文章!

标签:XmlDocumentXML编码转换


欢迎 发表评论: