System.Xml.XmlException:给定编码中的字符无效。 8271 行,位置 163

2024-03-29

我正在编写一个简单的 XML 解析器,它将传递以下 XML 输出:http://www.cpalead.com/dashboard/reports/campaign_rss.php?id=187000 http://www.cpalead.com/dashboard/reports/campaign_rss.php?id=187000

完整的 C# 代码是:

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

    }

Offers 是一个 div 元素。 当我运行此代码时,我收到“System.Xml.XmlException:给定编码中的无效字符。第 8271 行,位置 163。”错误 正如你所看到的,我还使用 ourBlog.Declaration.Encoding = ""; 设置编码 我努力了:

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

我不知道还能尝试什么。 你有什么建议吗?

EDIT:

堆栈跟踪是:

来源错误:

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

堆栈跟踪:

[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

好的,我在这里找到了一个可行的解决方案。

这是新代码:

protected void LoadXML()
    {
        var wc = new WebClient();
        using (var sourceStream = wc.OpenRead("http://www.cpalead.com/dashboard/reports/campaign_rss.php?id=187000"))
        {
            using (var reader = new StreamReader(sourceStream))
            {
                XDocument ourBlog = XDocument.Load(reader);
                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 = XmlConvert.VerifyXmlChars(item.Element("description").Value),
                                  amount = item.Element(NameSpace + "amount").Value,
                                  campid = item.Element(NameSpace + "campid").Value,
                                  country = item.Element(NameSpace + "country").Value,
                                  type = item.Element(NameSpace + "type").Value,
                                  epc = item.Element(NameSpace + "epc").Value,
                                  ratio = item.Element(NameSpace + "ratio").Value
                              };

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

希望这将来能对其他人有所帮助。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

System.Xml.XmlException:给定编码中的字符无效。 8271 行,位置 163 的相关文章

随机推荐

  • 如何使用 ie8 检测文本输入何时发生变化

    我想检测文本输入何时发生变化 我尝试了这些 在 Firefox 中有效 但在 ie 8 中无效 taskSearch bind input function alert this val taskSearch live input func
  • 防止手动添加的库被ndk-build删除

    我有一个项目正在重用预编译的本机库 libocr so 但我没有源文件 我手动将库放在项目的 libs armeabi 上 一切正常 然后我需要为同一个项目创建一个新的本机库 我将源代码与 Android mk 文件一样放在 jni 文件夹
  • itertool 中列表的条件笛卡尔积

    我有四个清单 LISTA A1 A2 LISTB B1 C B2 D LISTC C1 C2 LISTD D1 D2 我想要得到的笛卡尔积LISTA and LISTB 然后根据 B 的值 我想添加 C 的乘积或 D 的乘积 A1 B1 C
  • 仅使用一个映射器的 Hadoop gzip 输入文件[重复]

    这个问题在这里已经有答案了 可能的重复 为什么 hadoop 不能分割一个大文本文件 然后使用 gzip 压缩分割的内容 https stackoverflow com questions 6511255 why cant hadoop s
  • 获取当前的 python 模块对象(按名称或其他方式)

    如果我想获取当前模块 例如要重新加载它 我会这样做 import sys sys modules name 有没有更好的方法来做到这一点 例如不涉及 name 在这种情况下 更好意味着更惯用 更便携 更健壮 或者更多 我们通常在软件中希望的
  • 如何在Spring JPA for MySQL中设置@Id @GenerateValue的初始值?

    我不知道如何设置初始值 GenerateValue Id 我尝试过使用GenerationType SEQUENCE但这是不允许的MySQL 如何设置用于的初始值 GenerateValue 两者同时使用AUTO and TABLE我仍然无
  • magento 的 customer.xml 布局文件中的附加参数

    我正在尝试通过空白主题中的 customer xml 文件 这是在 Magento 1 4 1 1 中 向顶级客户链接 我的帐户 我的购物车等 添加一些解释性文本 我认为magento通过发出afterText或beforeText参数具有
  • 如何在不破坏localStorage中类型的情况下存储和获取对象?

    我正在使用 TypeScript 开发 AngularJS 项目 A person是一个对象Person班级 我需要存储person对象在localStorage并用它的类型检索它 窗口本地存储 https developer mozill
  • Android 创建日历事件

    我需要为 Android 应用程序创建多个日历事件 使用这个question https stackoverflow com questions 3721963 how to add calendar events in android 4
  • 从 C# 中的文本文件中读取数字

    这应该是很简单的事情 我只想从由空格分隔的标记组成的文本文件中读取数字和单词 在 C 中如何做到这一点 例如 在 C 中 以下代码可以读取整数 浮点数和字 我不想使用正则表达式或编写任何特殊的解析代码 ifstream in file tx
  • 使用 PdfMerger iText7 将 PdfDocument 转换为 byte[]

    我有一个要求 我使用生成不同的 pdf iText 7 1 11 我在用PdfMerger即时合并所有 pdf 我能够在本地系统成功生成 pdf 但应用程序需要发送bye 作为回应 我找到的解决方案here https kb itextpd
  • 标识符前面的::(双冒号)是什么意思?

    这条线 https github com rust lang libc blob 4af234205f440be38d9036a5bdbcfeed55fb2ced src unix linux like mod rs L2来自铁锈libc
  • ASP.NET真正的异步操作

    我正在尝试从 ASP NET 页面发出多个 HTTP 请求 页面本身不需要知道响应 并且应该继续处理并交付页面 我尝试将 HTTP 代码放入 BackgroundWorker 中并异步运行它 但是我最初收到以下错误 在此上下文中不允许异步操
  • 返回上一屏幕时,反应导航焦点立即模糊于输入

    当我导航到新屏幕时 我想专注于文本输入 当我将屏幕添加到堆栈时 这有效 但当我返回堆栈时 这不起作用 相反 输入聚焦一秒钟并立即模糊 这是我得到的 屏幕 A 位于堆栈中的第一个 输入立即模糊 屏幕 B 已添加到堆栈中并按预期工作 知道是什么
  • 尝试上传到使用多个元数据生成的 GCP 签名网址时收到 403

    我生成了一个 GCP 签名网址 标头中包含两个元数据值 例子 x goog meta reviewer 简 x goog meta author 杰克 当我尝试将文件上传到生成的签名 URL 并在标头中设置元数据时 我收到 403 禁止请求
  • SDL_RENDERER_PRESENTVSYNC 显示不一致

    我最近决定开始使用 SDL 作为我的库之一来编写 C 游戏 在编写程序和学习 SDL 的过程中 我偶然发现了程序中的一个特殊错误 并决定在 SSCCE 中复制它 以确保我没有发疯 问题似乎是 当我将 SDL RENDERER PRESENT
  • Powershell v4 不自动导入模块

    我在用Microsoft PowerShell v4 PS C gt get host Name ConsoleHost Version 4 0 InstanceId 3b4b6b8d 70ec 46dd 942a bfecf5fb6f31
  • Facebook 应用程序托管在 Google App Engine 上

    我是 Facebook 应用程序的新手 我已经在 GAE 上启动并运行了一个应用程序 使用 python 我想将它与 Facebook 集成 这样我就可以访问一些用户的数据来帮助我个性化应用程序 例如喜欢的页面 兴趣 他们来自哪里等数据 还
  • 在 GitHub for Windows 中克隆多个分支

    有时我需要在本地磁盘上同时拥有 GitHub 存储库的两个不同分支 尤其是在处理 gh pages 时 我通常通过在不同的文件夹中创建存储库的多个克隆来实现此目的 并使用不同的分支进行克隆 是否可以在 Windows UI 的 GitHub
  • System.Xml.XmlException:给定编码中的字符无效。 8271 行,位置 163

    我正在编写一个简单的 XML 解析器 它将传递以下 XML 输出 http www cpalead com dashboard reports campaign rss php id 187000 http www cpalead com