我正在尝试使用 Metro Style 应用程序中 System.Xml 命名空间中的 XmlReader 解析 html 和 xhtml 文件。我了解这种方法可能并不理想,因为 html 文档可能不一定按照 xml 标准进行格式化,但是经过大量研究,我一直无法找到更好的方法来解析这些文件(如果我忽略了某些事情,请让我知道!)。
每当我尝试读取包含“ ”的文件时,我的应用程序就会不断崩溃,这显然是由于该实体是 xml 中不存在的 html 实体。我已经阅读了有关如何解决此问题的其他几个问题和帖子,以便 XmlReader 可以解决此问题,但它们都不适用于我的情况。我想知道是否有一种方法可以向我的 XmlReader 添加一个设置,使其能够将“ ”解释为“ ”。
这些可能的解决方案对我不起作用/不会起作用:
我无法手动将 html 文件中的“ ”更改为“ ”,因为我的应用程序会解析来自不同来源的多个 html 文件,从而阻止我手动编辑单个文件。
我尝试使用以下标题解析的所有文件:“!DOCTYPE html PUBLIC”-//W3C//DTD XHTML 1.1//EN“” http://www.w3.org/TR/xhtml11/DTD/xhtml11。 dtd >"
当读者到达那条线时崩溃(出于某种奇怪的原因)。我可以通过该行的唯一方法是将 DtdProcessing 转换为 Ignore,这将忽略该行。如果 Dtd 已经声明了实体 ,那么我有效地撤消了它。
其他信息:当我说应用程序崩溃时,调试器没有抛出异常,但应用程序关闭,我被发送到此代码
#if DEBUG && !DISABLE_XAML_GENERATED_BREAK_ON_UNHANDLED_EXCEPTION
UnhandledException += (sender, e) =>
{
if (global::System.Diagnostics.Debugger.IsAttached) global::System.Diagnostics.Debugger.Break();
};
在名为 App.gics 的文件中
另外,我正在使用 Visual Studio 2012 for Win8 Metro Style。