c# - HtmlAgilityPack MixedCodeDocument 的预期用途是什么?

标签 c# asp.net html-agility-pack

我使用的是 1.4 版的 HtmlAgilityPack,据我所知,MixedCodeDocument 和相关类可以帮助您解析在 aspx 和 ascx 文件中找到的 asp.net 标记。我发现 MixedCodeDocument 类的文档或示例为零。根据我的尝试,MixedCodeDocument 似乎将文件的文本分成 block ,将 asp.net 片段与非 asp.net 片段分开。例如,以下代码段:

<asp:Label ID="lbl_xyz" runat="server" Text='<%=Name%>'></asp:Label>
<a href='#'>blah</a>

会分解成:

// Text fragment 1
<asp:Label ID="lbl_xyz" runat="server" Text="

// Code fragment 1
<%=Name%>

// Text fragment 2 (two lines)
></asp:Label>
<a href='#'>blah</a>

但是没有比这更深入的解析,即 a 标签没有被解析到它自己的带有属性或类似内容的节点中。

所以我最好的猜测是 MixedCodeDocument 应该用于剥离代码片段,以便可以将剩余的文本片段拼凑在一起,然后使用 HtmlDocument 类进行解析。

有人知道这是否正确吗?或者更好的是,是否有人对使用 HAP 或其他工具成功解析和操作 aspx 或 ascx 文件的方法有任何提示?

最佳答案

您的猜测是 100% 正确的。

MixedCodeDocument 类旨在能够解析包含两种语言的文本,即经典的 ASP、ASP.NET 等。因此得名 :-)

最初,Html Agility Pack 用于一种工具,该工具能够处理和转换各种文件的整个树,包括 HTML 和其他类型的文件。如果您只需要替换其他文件的 HTML 部分,此类可以帮助您拆分代码和标记以及。然后可以通过其他方式解析分离的代码和标记 block 。

我认为今天没有人在使用它:)

关于c# - HtmlAgilityPack MixedCodeDocument 的预期用途是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6948265/

相关文章:

c# - 字符 ä 在同一个字符串中以不同的 Char Codes 表示

c# - 链接按钮控件使用asp.net

c# - 如何在 C# 的 HTML 源代码中按类或 id 抓取元素?

c# - 我在 EF Core Code First 方法中使用 AutoFixture 时遇到异常 "AutoFixture.ObjectCreationExceptionWithPath"

c# - 无法加载文件或程序集

泛型类型中的 C# 多态性

C# HtmlAgilityPack 解析 <ul>

c# - 在 C#(.Net Compact Framework)中完全加载我的表单时的通知?

c# - 如何添加额外的路线?

c# - HtmlAgilityPack - 迄今为止文本的错误自动转换