如何在XmlReader中为Metro Style应用程序声明实体?

时间:2013-07-11 15:13:54

标签: html xml windows-8 microsoft-metro xmlreader

我正在尝试使用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。

0 个答案:

没有答案