C# System.Xml.XmlException-缺少根元素

C# System.Xml.XmlException-缺少根元素,c#,rss,xmldocument,C#,Rss,Xmldocument,我正在制作一个web应用程序,它从网站(URL在数据库中)获取RSS提要,然后将它们加载到我的web应用程序中。但我得到了这个错误 System.Xml.XmlException:缺少根元素。根元素是 丢失的at线:rssdoc.load(rssStream) 异常详细信息:System.Xml.XmlException:存在多个根元素。第2行,位置2。那么,如何通过单个xml元素封装其他所有内容呢 这是我的密码: using System; using System.Collections.G

我正在制作一个web应用程序,它从网站(URL在数据库中)获取RSS提要,然后将它们加载到我的web应用程序中。但我得到了这个错误

System.Xml.XmlException:缺少根元素。根元素是 丢失的at线:rssdoc.load(rssStream)

异常详细信息:System.Xml.XmlException:存在多个根元素。第2行,位置2。那么,如何通过单个xml元素封装其他所有内容呢

这是我的密码:

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;
    }
}

错误解释了最常见的异常情况:xml中缺少根元素


也就是说,您很可能有几个“根”元素,因此这些不是根元素。您需要一个xml元素来封装其他所有内容。这是要检查的第一件事

显然,这似乎是xml文件的问题。也许您可以发布引发此异常的xml?代码太多了。您应该根据自己的判断只发布相关部分,如果可能的话发布XML,并明确抛出异常的行。很抱歉,忘记将引发异常的行放在:rssdoc.load(rssStream);我想补充一点,这并不总是给我这个错误。我怎样才能给你xml文件!!!所有的网址,我从它的饲料!!也许你可以添加一个小例子来说明它。。这就是他们的xml,为什么有时候它会变得完美,有时候它会抛出这个异常有没有一种方法可以处理这个异常,除了我如何将每个东西封装在一个xml元素中请举个例子。感谢您的帮助使用try-catch处理异常。在你开始适应你自己的软件之前,你应该更好地修复问题的根源。检查为什么有时获得正确的XML,有时不获得。您不应该围绕XML,它应该以这种方式交付Daniel Abou Chleich请帮助我做什么,我非常感谢您回答“不应该围绕XML”是什么意思
[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