Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

System.Xml.XmlException - Root element is missing

I am making a web application that takes RSS feeds from websites(URLs are in database) and then loads them into my web application. But I am getting this error

System.Xml.XmlException: Root element is missing. root element is missing. at line : rssdoc.load(rssStream);

Exception Details: System.Xml.XmlException: There are multiple root elements. Line 2, position 2. so how to encapsulate everything else by single xml element

Here is my code:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Xml;
using System.Net;
using System.Text;
using System.IO;
using System.Data;
using System.Data.SqlClient;

public partial class poletics : System.Web.UI.Page
{
    public SqlConnection oldbcon = new SqlConnection();
    static int n = 0;
    static DataTable dt = new DataTable();
    protected void Page_Load(object sender, EventArgs e)
    {
        oldbcon = opncon();

        using (oldbcon)
        {
            SqlDataAdapter ad = new SqlDataAdapter("SELECT * from LebPolRss", oldbcon);
            ad.Fill(dt);
        }
        int f = 3;
        while (n < f)
        {
            for (int i = 0; i < dt.Rows.Count; i++)
            {
                Literal feed = new Literal();
                try
                {
                    feed.Text = ProcessRss(dt.Rows[i][3].ToString(), dt.Rows[i][4].ToString());
                }
                catch (WebException ex)
                {
                    WebResponse response = ex.Response;
                }
                Panel1.Controls.Add(feed);
            }
            n++;
        }
    }
    public static string ProcessRss(string rssUrl, string feed)
    {
        WebRequest request = WebRequest.Create(rssUrl);
        WebResponse response = request.GetResponse();
        StringBuilder sb = new StringBuilder("");
        Stream rssStream = response.GetResponseStream();
        XmlDocument rssDoc = new XmlDocument();

        rssDoc.Load(rssStream);//here is the line where the exception thrown
        XmlNodeList rssItems = rssDoc.SelectNodes("rss/channel/item");

        string title = "";
        string link = "";
        string description = "";
        int upperlimit = rssItems.Count;
        if (upperlimit > n)
            upperlimit = n + 1;
        if (upperlimit > 0)
        {
            sb.Append("<ul>");
            for (int i = 0; i < upperlimit - n; i++)
            {
                XmlNode rssDetail;
                rssDetail = rssItems.Item(i + n).SelectSingleNode("title");
                if (rssDetail != null)
                {
                    if (feed.ToString().Equals("tayyar"))
                    {
                        title = rssDetail.InnerText.Substring(5);
                    }
                    else
                    {
                        if (rssDetail.InnerText.Length > 75)
                        {
                            title = rssDetail.InnerText.Substring(0, 75);
                        }
                        else
                        {
                            title = rssDetail.InnerText;
                        }
                    }
                }
                else
                {
                    title = "";
                }

                rssDetail = rssItems.Item(i + n).SelectSingleNode("link");
                if (rssDetail != null)
                {
                    if (feed.ToString().Equals("tayyar"))
                    {
                        if (rssDetail.InnerText.Substring(0, 21).CompareTo("http://www.tayyar.org") != 0)
                        {
                            link = "http://www.tayyar.org" + rssDetail.InnerText;
                        }
                        else
                        {
                            link = rssDetail.InnerText;
                        }
                    }
                    else
                    {
                        link = rssDetail.InnerText;
                    }
                }
                else
                {
                    link = "";
                }
                rssDetail = rssItems.Item(i + n).SelectSingleNode("description");
                if (rssDetail != null)
                {
                    if (!rssDetail.InnerText.Substring(3, 3).Equals("Ad:"))
                    {

                        description = rssDetail.InnerText;
                    }

                }
                else
                {
                    description = "";
                }
                switch (feed)
                {
                    case "tayyar": sb.Append("<div class='imgsep'><li><img src='logos/tayyar.jpg' width='50px' height='30px'/>&nbsp;&nbsp;&nbsp;<a href='" + link + "' target='_blank'>" + title + "</a>&nbsp;<img src='Images/smallarrow.png'/></li></div>");
                        break;
                    case "14march": sb.Append("<div class='imgsep'><li><img src='logos/14march.jpg' width='50px' height='30px'/>&nbsp;&nbsp;&nbsp;<a href='" + link + "' target='_blank'>" + title + "</a>&nbsp;<img src='Images/smallarrow.png'/></li></div>");
                        break;
                    case "annahar": sb.Append("<div class='imgsep'><li><img src='logos/annahar.jpg' width='50px' height='30px'/>&nbsp;&nbsp;&nbsp;<a href='" + link + "' target='_blank'>" + title + "</a>&nbsp;<img src='Images/smallarrow.png'/></li></div>");
                        break;
                    case "alakhbar": sb.Append("<div class='imgsep'><li><img src='logos/akhbar.jpg' width='50px' height='30px'/>&nbsp;&nbsp;&nbsp;<a href='" + link + "' target='_blank'>" + title + "</a>&nbsp;<img src='Images/smallarrow.png'/></li></div>");
                        break;
                    case "sadabeirut": sb.Append("<div class='imgsep'><li><img src='logos/echobeirut.png' width='50px' height='30px'/>&nbsp;&nbsp;&nbsp;<a href='" + link + "' target='_blank'>" + title + "</a>&nbsp;<img src='Images/smallarrow.png'/></li></div>");
                        break;
                    case "assafir": sb.Append("<div class='imgsep'><li><img src='logos/assafir.png' width='50px' height='30px'/>&nbsp;&nbsp;&nbsp;<a href='" + link + "' target='_blank'>" + title + "</a>&nbsp;<img src='Images/smallarrow.png'/></li></div>");
                        break;
                    case "aliwaa": sb.Append("<div class='imgsep'><li><img src='logos/aliwaa.jpg' width='50px' height='30px'/>&nbsp;&nbsp;&nbsp;<a href='" + link + "' target='_blank'>" + title + "</a>&nbsp;<img src='Images/smallarrow.png'/></li></div>");
                        break;
                }
            }
            sb.Append("</ul>");
        }
        return sb.ToString();
    }
    protected void LinkButton1_Click(object sender, EventArgs e)
    {
        oldbcon = opncon();
        using (oldbcon)
        {
            SqlDataAdapter ad = new SqlDataAdapter("SELECT * from LebPolRss", oldbcon);
            ad.Fill(dt);
        }
        n = 4;
        for (int i = 0; i < dt.Rows.Count; i++)
        {
            Literal feed = new Literal();
            try
            {
                feed.Text = ProcessRss(dt.Rows[i][3].ToString(), dt.Rows[i][4].ToString());
            }
            catch (WebException ex) { WebResponse response = ex.Response; }
            Panel1.Controls.Add(feed);
        }
        LinkButton1.Visible = false;
    }
    public static SqlConnection opncon()
    {
        string connectionString = "Data Source=RAYYAN-THINK;Initial Catalog=newsProject;Integrated Security=True";
        SqlConnection conn = new SqlConnection(connectionString);
        return conn;
    }
}

Stack Trace:

[XmlException: Root element is missing.]
   System.Xml.XmlTextReaderImpl.Throw(Exception e) +69
   System.Xml.XmlTextReaderImpl.ParseDocumentContent() +5589128
   System.Xml.XmlTextReaderImpl.Read() +215
   System.Xml.XmlLoader.Load(XmlDocument doc, XmlReader reader, Boolean preserveWhitespace) +145
   System.Xml.XmlDocument.Load(XmlReader reader) +107
   System.Xml.XmlDocument.Load(Stream inStream) +130
   poletics.ProcessRss(String rssUrl, String feed) in c:\Users\RAYYAN\Documents\Visual Studio 2012\WebSites\WebSite1\poletics.aspx.cs:57
   poletics.Page_Load(Object sender, EventArgs e) in c:\Users\RAYYAN\Documents\Visual Studio 2012\WebSites\WebSite1\poletics.aspx.cs:36
   System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e) +51
   System.Web.UI.Control.OnLoad(EventArgs e) +92
   System.Web.UI.Control.LoadRecursive() +54
   System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +772
like image 224
ra22 Avatar asked Oct 31 '13 12:10

ra22


People also ask

What does root element is missing mean?

'The root element is missing' message is triggered when the Controller cache files are corrupt. These are the files with file extensions *.DSS and *.DSD. By default, they are stored inside the following folder: %APPDATA%\Cognos\CCR.

What is a root element in XML?

Each XML document has exactly one single root element. It encloses all the other elements and is, therefore, the sole parent element to all the other elements. ROOT elements are also called document elements. In HTML, the root element is the <html> element.


1 Answers

Error explains the most common case of the exception : you have a root element missing in your xml.

Meaning, you most likely have several 'root' elements therefore those are not root elements. You need a single xml element encapsulating everything else. This is first thing to check

like image 71
frno Avatar answered Oct 11 '22 20:10

frno