我使用的是 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/