System.Xml.XmlException: Ungültiges Zeichen in der angegebenen Codierung. Linie 8271, position 163

Schreibe ich einen einfachen XML-parser, der bestehen würde, diese XML-Ausgabe: http://www.cpalead.com/dashboard/reports/campaign_rss.php?id=187000

Den vollständigen C# - code ist:

    protected void LoadXML()
    {
        XDocument ourBlog = XDocument.Load("http://www.cpalead.com/dashboard/reports/campaign_rss.php?id=187000");
        ourBlog.Declaration.Encoding = "ISO-8859-1";
        XNamespace NameSpace = "http://www.cpalead.com/feeds/campinfo.php";
        var XMLItem = from item in ourBlog.Descendants("item")
                      select new
                      {
                          title = item.Element("title").Value,
                          link = item.Element("link").Value,
                          guid = item.Element("guid").Value,
                          description = item.Element("description").Value,
                          campinfoamount = item.Element(NameSpace + "amount").Value,
                          campinfocampid = item.Element(NameSpace + "campid").Value,
                          campinfocountry = item.Element(NameSpace + "country").Value,
                          campnfotype = item.Element(NameSpace + "type").Value,
                          campinfoepc = item.Element(NameSpace + "epc").Value,
                          campinforatio = item.Element(NameSpace + "ratio").Value
                      };

        foreach (var item in XMLItem)
        {
            offers.InnerHtml += item.title + item.campinforatio + "<br>";
        }

    }

bietet, ist ein div-element.
Wenn ich diesen code ausführen, bekomme ich eine "System.Xml.XmlException: Ungültiges Zeichen in der angegebenen Codierung. Linie 8271, position 163." Fehler
Wie Sie sehen können habe ich auch set Encoding mit ourBlog.Erklärung.Encoding = "";
Ich habe versucht:

  • ISO-8859-1
  • UTF-8
  • windows-1251
  • windows-1252
  • UTF-16

Ich weiß nicht, was anderes zu versuchen.
Haben Sie irgendwelche Vorschläge?

EDIT:

Stack Trace:

Quelle Fehler:

Line 19:         protected void LoadXML()
Line 20:         {
Line 21:             XDocument ourBlog = XDocument.Load("http://www.cpalead.com/dashboard/reports/campaign_rss.php?id=187000");
Line 22:             ourBlog.Declaration.Encoding = "ISO-8859-1";
Line 23:             XNamespace NameSpace = "http://www.cpalead.com/feeds/campinfo.php";

Stack Trace:

[XmlException: Invalid character in the given encoding. Line 8271, position 163.]
System.Xml.XmlTextReaderImpl.Throw(Exception e) +69
System.Xml.XmlTextReaderImpl.Throw(String res, String arg) +116
System.Xml.XmlTextReaderImpl.InvalidCharRecovery(Int32& bytesCount, Int32& charsCount) +197
System.Xml.XmlTextReaderImpl.GetChars(Int32 maxCharsCount) +131
System.Xml.XmlTextReaderImpl.ReadData() +188
System.Xml.XmlTextReaderImpl.ParseText(Int32& startPos, Int32& endPos, Int32& outOrChars) +482
System.Xml.XmlTextReaderImpl.FinishPartialValue() +62
System.Xml.XmlTextReaderImpl.get_Value() +74
System.Xml.Linq.XContainer.ReadContentFrom(XmlReader r) +505
System.Xml.Linq.XContainer.ReadContentFrom(XmlReader r, LoadOptions o) +48
System.Xml.Linq.XDocument.Load(XmlReader reader, LoadOptions options) +283
System.Xml.Linq.XDocument.Load(String uri, LoadOptions options) +58
System.Xml.Linq.XDocument.Load(String uri) +6
WebApplication3.Earn._default.LoadXML() in c:\Users\WinDrop\Documents\Visual Studio 2013\Projects\WebApplication3\WebApplication3\Earn\default.aspx.cs:21
WebApplication3.Earn._default.Page_Load(Object sender, EventArgs e) in c:\Users\WinDrop\Documents\Visual Studio 2013\Projects\WebApplication3\WebApplication3\Earn\default.aspx.cs:16
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
Was ist der stack-trace?
Einige Zeichen sind illegal in XML, egal, was die Codierung ist (z.B. einige Zeichen mit code unter 32) - vielleicht ist das Ihr Fall?
Wenn es unzulässige Zeichen, die in XML dann, warum ich es öffnen kann, in IE und Chrome?
Dude, die Tatsache, dass Sie können öffnen Sie eine website in IE und Chrome ist nicht etwas, das Sie nehmen sollten eine Garantie, dass es stellt die gültige XML. Mit dem konkreten Beispiel haben Sie auf dieser website, könnten Sie versuchen, jede XML-validator und es wird einfach Bombe, wie ungültige XML. So ist es ziemlich normal, dass Sie würde eine Ausnahme ausgelöst werden, wenn Sie versuchen zu laden, die ungültige XML in ein XML-parser.
Mein Freund schrieb einen parser für die gleiche Seite in PHP und es funktioniert absolut in Ordnung. Alles, was er hatte machen sollen, ist content-type im header auf UTF-8. Würde dies nicht bedeuten, dass die XML ist in Ordnung?

InformationsquelleAutor Arturs Kirsis | 2014-01-05

Schreibe einen Kommentar