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