C# 从HtmlAlityPack利用HtmlDocument对象的最佳方法是什么?

C# 从HtmlAlityPack利用HtmlDocument对象的最佳方法是什么?,c#,asp.net,html-agility-pack,C#,Asp.net,Html Agility Pack,我有一个加载html文档并返回以进行进一步操作的代码段 private HtmlDocument LoadPage(string path) { var web = new HtmlWeb(); var doc = web.Load(url + path); return doc; } 我创建了较小的方法,以以下方式提取我想要的信息: public string getNameInfo(String path)

我有一个加载html文档并返回以进行进一步操作的代码段

  private HtmlDocument LoadPage(string path)
    {
        var web = new HtmlWeb();
        var doc = web.Load(url + path);
        return doc;
    }
我创建了较小的方法,以以下方式提取我想要的信息:

    public string getNameInfo(String path)
    {
        HtmlDocument doc = LoadPage(path);
        string tag = doc.DocumentNode.SelectSingleNode("//*[@id='header_action']/div[1]/div[2]/h2").InnerText.Replace("\n", String.Empty);
        return tag;
    }
我有另一个方法返回另一个我想通知的标记

  public string getCodeInfo(String path)
    {
        HtmlDocument doc = LoadPage(path);
        string tag = doc.DocumentNode.SelectSingleNode("//*[@id='header_action']/div[1]/div[2]/h1").InnerText.Replace("\n", String.Empty);
        return tag;
    }
今天,我可以提取我想要的信息,但我想重用已经查阅过的HtmlDocument,并从页面上下载一次

我尝试了一些解决方案,但我做不到,有没有办法把一个HtmlDocument分解成更小的函数来填充我的变量,而不需要对加载方法进行多次查询。建议对LoadPage方法执行一个查询,并将其用于所有次要功能


谢谢收听

我不确定我是否理解正确。为什么不简单地重用
HtmlDocument

public string GetNameInfo(HtmlDocument doc)
{
    string tag = doc.DocumentNode.SelectSingleNode("//*[@id='header_action']/div[1]/div[2]/h2").InnerText.Replace("\n", String.Empty);
    return tag;
}

public string GetCodeInfo(HtmlDocument doc)
{
    string tag = doc.DocumentNode.SelectSingleNode("//*[@id='header_action']/div[1]/div[2]/h1").InnerText.Replace("\n", String.Empty);
    return tag;
}
只需加载一次,然后将其传递给方法


另一种方法是:将
HtmlDocument
存储在类的属性或字段中,用
LoadPage
初始化它,然后在
GetNameInfo
GetCodeInfo
中访问它,删除这些方法中的参数。

非常感谢您的帮助,我的朋友。我道歉,因为我的英语很差,但你正确理解我的意思,我留下我真诚的感谢