C# 使用HtmlAgilityPack解析ASP元素

C# 使用HtmlAgilityPack解析ASP元素,c#,asp.net,parsing,html-agility-pack,C#,Asp.net,Parsing,Html Agility Pack,我有一个基本的ASPX页面: <%@ Page Language="C#" MasterPageFile="SomeMasterPage.master" AutoEventWireup="true" %> <h1>My ASPX Page</h1> <div class="content"> <p>Some content goes here.</p> </div> 我意识到开始的ASPX行实际上不是H

我有一个基本的ASPX页面:

<%@ Page Language="C#" MasterPageFile="SomeMasterPage.master" AutoEventWireup="true" %>
<h1>My ASPX Page</h1>
<div class="content">
    <p>Some content goes here.</p>
</div>

我意识到开始的ASPX行实际上不是HTML,这很可能是HtmlAgilityPack将其作为文本节点返回的原因。现在,我可以使用这个返回的文本手动解析属性中的值,但我更希望它像标准HTML节点一样处理。有没有办法教HtmlAgilityPack将顶行视为HTML节点?

我认为没有办法让
HtmlAgilityPack
将无效元素读取为HTML元素。来点小技巧怎么样:

//get the first line string
var firstNodeText = doc.DocumentNode.ChildNodes[0].InnerHtml;

//do simple string manipulation to change invalid element to become a valid html element
//in this example we change this : <%@ .... %> to become : <_asp .... />
HtmlNode firstNode = HtmlNode.CreateNode(firstNodeText.Replace("<%@", "<_asp").Replace("%>", "/>"));
//获取第一行字符串
var firstNodeText=doc.DocumentNode.ChildNodes[0].InnerHtml;
//执行简单的字符串操作,将无效元素更改为有效的html元素
//在本例中,我们将其更改为:
HtmlNode firstNode=HtmlNode.CreateNode(firstNodeText.Replace(“”);
//get the first line string
var firstNodeText = doc.DocumentNode.ChildNodes[0].InnerHtml;

//do simple string manipulation to change invalid element to become a valid html element
//in this example we change this : <%@ .... %> to become : <_asp .... />
HtmlNode firstNode = HtmlNode.CreateNode(firstNodeText.Replace("<%@", "<_asp").Replace("%>", "/>"));