我用Winform 读取标准RSS源,但是有些RSS源中含有的不是节点的<abc>这样的内容,这时候就会报错了,请问如何避免或者处理这样的字符啊。。请教了比如一个正常的节点的InnerText 为<abc>,读取的时候会报错,如何解决,期待。

解决方案 »

  1.   

    public static DataTable ReadRss(string RssURL)
    {
        DataTable Dt = new DataTable();
        DataColumn Title = new DataColumn("Title", typeof(string));
        DataColumn Author = new DataColumn("Author", typeof(string));
        DataColumn PubDate = new DataColumn("PubDate", typeof(string));
        DataColumn Link = new DataColumn("Link", typeof(string));
        Dt.Columns.Add(Title);
        Dt.Columns.Add(Author);
        Dt.Columns.Add(PubDate);
        Dt.Columns.Add(Link);
        System.Net.WebRequest myRequest = System.Net.WebRequest.Create(RssURL);
        System.Net.WebResponse myResponse = myRequest.GetResponse();
        System.IO.Stream rssStream = myResponse.GetResponseStream();
        System.Xml.XmlDocument rssDoc = new System.Xml.XmlDocument();
        rssDoc.Load(rssStream);
        System.Xml.XmlNodeList rssItems = rssDoc.SelectNodes("rss/channel/item");
        for (int i = 0; i < rssItems.Count; i++)
        {
            DataRow Row = Dt.NewRow();
            System.Xml.XmlNode rssDetail;
             rssDetail = rssItems.Item(i).SelectSingleNode("title");
            if (rssDetail != null)
            {
                Row["Title"] = rssDetail.InnerText;
            }
            else
            {
                Row["Title"] = "";
            }
            rssDetail = rssItems.Item(i).SelectSingleNode("author");
            if (rssDetail != null)
            {
                Row["Author"] = rssDetail.InnerText;
            }
            else
            {
                Row["Author"] = "";
            }
            rssDetail = rssItems.Item(i).SelectSingleNode("pubDate");
            if (rssDetail != null)
            {
                Row["PubDate"] = Convert.ToDateTime(rssDetail.InnerText).ToString("yyyy年MM月dd日");
            }
            else
            {
                Row["PubDate"] = "";
            }
             rssDetail = rssItems.Item(i).SelectSingleNode("link");
            if (rssDetail != null)
            {
                Row["Link"] = rssDetail.InnerText;
            }
            else
            {
                Row["Link"] = "";
            }
            Dt.Rows.Add(Row);
        }
        return Dt;

    或用实体类