Windows Phone 7 中的 XDocument.Parse 是否有所不同?

2024-02-19

我在 WP7 应用程序和 C# 3.5 应用程序中运行完全相同的代码。 WP7应用程序抛出一个NotSupportedException打电话时XDocument.Parse()而 C# 3.5 应用程序可以毫无问题地解析 XML。下面是使用的代码:

WebClient client = new WebClient();
client.DownloadStringCompleted += new DownloadStringCompletedEventHandler(DownloadThreadsComplete);
client.DownloadStringAsync(new Uri("http://us.battle.net/sc2/en/forum/40568/", UriKind.Absolute));

...

private static void DownloadThreadsComplete(object sender, DownloadStringCompletedEventArgs e)
{
    var doc = XDocument.Parse(e.Result);
}

知道为什么会发生这种情况吗?奇怪的是,当 WoW 论坛工作正常时,尝试解析 SC2 论坛时却失败了(http://us.battle.net/wow/en/forum/984270/)。

Edit:

异常消息是“NotSupportedException”。这是完整的堆栈跟踪:

   at System.Xml.XmlTextReaderImpl.ParseDoctypeDecl()
   at System.Xml.XmlTextReaderImpl.ParseDocumentContent()
   at System.Xml.XmlTextReaderImpl.Read()
   at System.Xml.Linq.XDocument.Load(XmlReader reader, LoadOptions options)
   at System.Xml.Linq.XDocument.Parse(String text, LoadOptions options)
   at System.Xml.Linq.XDocument.Parse(String text)
   at SC2ForumReader.Pages.ForumViewerPage.DownloadThreadsComplete(Object sender, DownloadStringCompletedEventArgs e)
   at System.Net.WebClient.OnDownloadStringCompleted(DownloadStringCompletedEventArgs e)
   at System.Net.WebClient.DownloadStringOperationCompleted(Object arg)
   at System.Reflection.RuntimeMethodInfo.InternalInvoke(RuntimeMethodInfo rtmi, Object obj, BindingFlags invokeAttr, Binder binder, Object parameters, CultureInfo culture, Boolean isBinderDefault, Assembly caller, Boolean verifyAccess, StackCrawlMark& stackMark)
   at System.Reflection.RuntimeMethodInfo.InternalInvoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture, StackCrawlMark& stackMark)
   at System.Reflection.MethodBase.Invoke(Object obj, Object[] parameters)
   at System.Delegate.DynamicInvokeOne(Object[] args)
   at System.MulticastDelegate.DynamicInvokeImpl(Object[] args)
   at System.Delegate.DynamicInvoke(Object[] args)
   at System.Windows.Threading.DispatcherOperation.Invoke()
   at System.Windows.Threading.Dispatcher.Dispatch(DispatcherPriority priority)
   at System.Windows.Threading.Dispatcher.OnInvoke(Object context)
   at System.Windows.Hosting.CallbackCookie.Invoke(Object[] args)
   at System.Windows.Hosting.DelegateWrapper.InternalInvoke(Object[] args)
   at System.Windows.RuntimeHost.ManagedHost.InvokeDelegate(IntPtr pHandle, Int32 nParamCount, ScriptParam[] pParams, ScriptParam& pResult)

Edit2:

我已经完成了建议的操作,并查看了两个不同请求的输出。此外,在我的 3.5 客户端应用程序中,我强制用户代理与 WP7 模拟器中的用户代理相同,以确保不是用户代理导致问题。

以下是从 Visual Studio 复制的 doctype 声明:

<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.1//EN\" \"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd\">

每个文档中的文档类型都是相同的,但文件中存在一些突出的差异(看起来在 3.5 一侧插入了一些额外的字符):

WP7 模拟器:StarCraft II

3.5 应用:StarCraft II


问题是 XDocument.Parse 启用 DTD 处理(通常在 XmlTextReader 上默认情况下禁用),但它不提供解析器。试试这个代码:

private static void DownloadThreadsComplete(object sender, DownloadStringCompletedEventArgs e)
{
    XDocument doc;
    XmlReaderSettings settings = new XmlReaderSettings();
    settings.DtdProcessing = DtdProcessing.Ignore;

    using (XmlReader reader = XmlReader.Create(new StringReader(e.Result), settings))
    {
         doc = XDocument.Load(reader);
    }

    // Do stuff with doc
}

OR:-

private static void DownloadThreadsComplete(object sender, DownloadStringCompletedEventArgs e)
{
    XDocument doc;
    XmlReaderSettings settings = new XmlReaderSettings();
    settings.DtdProcessing = DtdProcessing.Parse;
    settings.XmlResolver = new XmlPreloadedResolver(XmlKnownDtds.Xhtml10);

    using (XmlReader reader = XmlReader.Create(new StringReader(e.Result), settings))
    {
         doc = XDocument.Load(reader);
    }

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

Windows Phone 7 中的 XDocument.Parse 是否有所不同? 的相关文章

  • 使用 CMake 时如何导出 Emscripten 中的 C 函数

    In 本教程 https emscripten org docs porting connecting cpp and javascript Interacting with code html interacting with code
  • 将类对象放置在向量中?

    我注意到我可以将一个类放置在一个向量中 这是我的程序 我收到以下错误 out blackjack exe blackjack obj blackjack obj error LNK2019 unresolved external symbo
  • 转换 const void*

    我有一个函数返回一个const void 我想用它的信息作为char 我可以将它投射为 C 风格的罚款 char variable但是当我尝试使用reinterpret cast like reinterpret cast
  • 如何在类文件中使用 Url.Action() ?

    如何在 MVC 项目的类文件中使用 Url Action Like namespace 3harf public class myFunction public static void CheckUserAdminPanelPermissi
  • MVC3中设置下拉列表中的所选项目

    我必须为视图中的下拉列表设置所选项目 但它不起作用 View div class editor label Html LabelFor model gt model Gender div div class editor field Htm
  • 从复选框列表中选择循环生成的复选框中的一个复选框

    抱歉我的英语不好 在我的 ASP NET 网站上 我从 SQL 表导入软件列表 看起来像这样 但实际上要长得多 Microsoft Application Error Reporting br br Microsoft Applicatio
  • java中如何重新初始化int数组

    class PassingRefByVal static void Change int pArray pArray 0 888 This change affects the original element pArray new int
  • cpp.react库的C++源代码中奇怪的“->* []”表达式

    这是我在文档中找到的 C 片段cpp react 库 https github com schlangster cpp react implicit parallelism auto in D MakeVar 0 auto op1 in g
  • 什么是空终止字符串?

    它与什么不同标准 字符串 http www cplusplus com reference string string 字符串 实际上只是一个数组chars 空终止字符串是指其中包含空字符的字符串 0 标记字符串的结尾 不一定是数组的结尾
  • 在 C# 中检查 PowerShell 执行策略的最佳方法是什么?

    当你跑步时Get ExecutionPolicy在 PowerShell 中 它得到有效的执行政策 https learn microsoft com en us powershell module microsoft powershell
  • 在 VS 中运行时如何查看 C# 控制台程序的输出?

    我刚刚编写了一个名为 helloworld 的聪明程序 它是一个 C NET 4 5 控制台应用程序 在扭曲的嵌套逻辑迷宫深处 使用了 Console WriteLine 当我在命令行运行它时 它会运行并且我会看到输出 我可以执行其他命令并
  • 如何使用 x64 运行 cl?

    我遇到了和这里同样的问题致命错误 C1034 windows h 未设置包含路径 https stackoverflow com questions 931652 fatal error c1034 windows h no include
  • 从网页运行 ClickOnce 应用程序,无需用户操作

    我们有一个基于 Java 的 Web 应用程序以及用 C 编写的相同应用程序 如果 java 检查器发现客户端计算机上没有安装 Java 则应该运行该应用程序 这个想法是运行 C 单击一次 http en wikipedia org wik
  • 在 .NET MAUI 中实现 TouchTracking

    我一直致力于将我们的应用程序从 Xamarin Forms 迁移到 NET MAUI 我们的应用程序几乎没有绘图功能 用户可以用手指进行绘图 我们用了TouchTrackingXamarin Forms 中的 nuget 包 但与 NET
  • memcpy/memmove 到联合成员,这是否设置“活动”成员?

    重要说明 一些评论者似乎认为我是从工会抄袭的 仔细看memcpy 它从普通旧地址复制uint32 t 它不包含在联合中 另外 我正在复制 通过memcpy 到工会的特定成员 u a16 or u x in a union 不直接到整个联盟本
  • 将函数参数类型提取为参数包

    这是一个后续问题 解包 元组以调用匹配的函数指针 https stackoverflow com questions 7858817 unpacking a tuple to call a matching function pointer
  • 如何让您的 WP7 应用程序出现在游戏中心?

    我为 WP7 制作了一个简单的游戏 但显然仅使用 XNA 模板不足以让您的游戏显示在游戏中心中 我需要什么代码才能实现这一点 另外 我可以让用 silverlight 制作的游戏也出现在游戏中心吗 如果是这样 我该怎么做 Thanks 您需
  • 使动态创建的链接标签在 Winforms 中可点击

    我正在制作一个程序 允许用户单击由动态链接标签创建的公司名称 在我想知道如何做到这一点之前 我从未在 C 中使用过链接标签 可为特定用户生成的业务数量各不相同 因此每个用户的链接标签数量并不相同 然后我想捕获业务 ID 以进行 Json 调
  • Visual Studio 2015:v120 与 v140?

    仅供参考 Win10 x64 我今天开始尝试 Visual Studio 2015 在弄清楚如何运行 C C 部分后 我尝试加载一个大型个人项目 该项目使用非官方的glsdk http glsdk sourceforge net docs
  • Visual Studio 2015 - Web 项目上缺少共享项目参考选项卡

    我从 MSDN 订阅升级到 Visual Studio 2015 因为我非常兴奋地阅读有关共享项目的信息 当我们想要做的只是重用代码时 不再需要在依赖项中管理 21382 个 nuget 包 所以我构建了一个测试共享项目 其中包含一些代码

随机推荐

  • 合并排序交换和比较

    我目前正在开展一个分析项目 观察不同算法在 Java 中实现时的行为方式 我从网上获得了一些实现合并排序算法的代码 现在我需要在 10 000 个随机生成的整数 1 到 100 000 之间 的数组上运行此代码 并记录进行了多少次交换和比较
  • WCF 服务应用程序使用 WebGet 返回 404

    我仅创建了最基本的 WCF 服务应用程序来进行一些原型设计 但我无法使 WebGet 实现正常工作 这是我的界面 ServiceContract public interface IService OperationContract Web
  • 尝试连接 amazon mysql rds 时出现错误 10060

    我创建了一个MYSQL Amazon RDS实例并尝试通过以下方式访问它MYSQL Workbench从 Windows 机器 但我得到了10060错误而Amazon RDS是可公开访问的 我在亚马逊论坛上阅读了一些文档 但我无法理解如何设
  • 获取分支的特定版本

    有没有办法下载分支的特定版本 我特别想做一个 git 克隆https github com Theano Theano https github com Theano Theano现在 并保存一组有关如何从 github 获取完全相同版本的
  • Cassandra如何在表中添加集群键?

    cassandra中有一张表 create table test moments id Text title Text sort int PRIMARY KEY id 如何在 排序 列中添加聚类键 不重新创建表 主要问题是磁盘上的数据结构
  • 如何在 AngularJS 中检测 onKeyUp?

    如何在 AngularJS 中检测 onKeyUp 我正在寻找一个 ngOnkeyup 指令 类似于 ngChange 但我找不到任何合适的东西 如果没有这样的指令 是否有一种干净的方法可以从浏览器本机 onkeyup 事件调用控制器 对于
  • Pandas Dataframe 一次迭代两行

    我正在使用以下Dataframe Price Price2 Count perc change 0 0 000868 33782 17 4 1 000000 1 0 000872 33224 89 3 0 460829 2 0 000875
  • 如何通过 CMake 查找特定/本地文件

    我对本地安装的库有疑问 在我的项目中有 xmlrpc 0 7 library myproject xmlrpc 0 7 src 如果没有找到 我希望 CMake 使用本地 xmlrpc 0 7 目录进行回退 有两个问题 第一个问题 find
  • VirtualAlloc() 失败:[0x00000008] 没有足够的存储空间来处理此命令

    我已经面对这个错误相当长一段时间了 我的生产环境在 Windows 2008 R2 企业平台上运行 Apache 2 4 和 php7 我的错误日志充满了这些行VirtualAlloc 失败 0x00000008 没有足够的存储空间来处理此
  • 向 C# 控制器发送 HTTP POST 请求

    我正在尝试向我的 C 控制器发出 HTTP POST 请求 但我需要发送数据数组 因此我尝试使用 JSON stringify 但当我开始调试时 我的控制器中的输入参数为 NULL 我收到来自外部 API 的天气预报列表 因此我需要为列表中
  • 如何使用模板引用?

    我正在尝试找到一种在 Angular2 中动态构建模板的方法 我在想 templateRef 可能会提供一种方法来做到这一点 但我可能是错的 我在这里找到了使用 templateRef 的示例 https github com dsebas
  • Rails 3.2.13,开发中出现500错误,无日志

    我在迁移 Rails 2 x gt 3 2 13 时遇到问题 在某些时候 在解决了一些问题之后 我得到了Completed 500 Internal Server Error in 76ms没有任何回溯 开发 rb config consi
  • 如何在 ASP.NET Core Web API 应用程序中创建全局变量?

    如何在 ASP NET Core Web API 应用程序中创建全局变量 在 ASP NET MVC 中 我可以这样做 Application
  • 从 NSRange 创建 UITextRange

    我需要在文本视图中找到不同范围的像素帧 我正在使用 CGRect firstRectForRange UITextRange range 去做吧 但是我不知道如何实际创建一个UITextRange 基本上这就是我正在寻找的 CGRect f
  • 为什么我的程序在某些电脑上显示 Windows UAC 图标,而在其他电脑上则不显示?

    我最近注意到 我们开发的一个应用程序在我们的一些客户的 PC 上 但在我们的 PC 上没有 旁边有 Windows UAC 图标 有什么原因可能会发生这种情况吗 我注意到这一点的原因是客户声称该软件突然停止工作 在检查他们的 PC 时 我注
  • 从 php 函数运行 artisan 命令

    我想跑php artisan passport client password从功能 I tryed Artisan call passport client and Artisan command passport client 但它返回
  • 为什么 GLsizei 不定义为无符号?

    我正在查找typedef of GLsizei用于 iOS 上的 OpenGL ES 1 1 实现 并惊讶地发现它被定义为int 一些快速谷歌搜索表明这是正常的 包括在普通 OpenGL 上 我原以为它会被定义为unsigned int o
  • Yosemite 中“打开时”Applescript 处理程序的问题

    在 OSX 10 10 Yosemite 中使用 Applescript 时 Apple 似乎更改了一些默认行为 on open dropped files display dialog count of dropped files end
  • 支持库中的RecyclerView在哪里?

    我正在开发一个使用 RecyclerView 组件的应用程序 我正在检查我的 build gradle 文件 它具有以下依赖项 compile com android support appcompat v7 25 3 1 compile
  • Windows Phone 7 中的 XDocument.Parse 是否有所不同?

    我在 WP7 应用程序和 C 3 5 应用程序中运行完全相同的代码 WP7应用程序抛出一个NotSupportedException打电话时XDocument Parse 而 C 3 5 应用程序可以毫无问题地解析 XML 下面是使用的代码