【问题标题】:How to get form input with HtmlAgilityPack without getting a null reference error?如何在不出现空引用错误的情况下使用 HtmlAgilityPack 获取表单输入?
【发布时间】:2013-11-21 02:24:03
【问题描述】:

如何从下面的 HTML 表单中提取<br> 之后的第二组输入节点?

当我尝试以下操作时,我没有得到任何输入节点。

HtmlNode.ElementsFlags.Remove("form");
HtmlNode formNode = doc.DocumentNode.SelectNodes("//form")[0];
foreach (HtmlNode innode in formNode.Elements("input"))
{
 ...
}

HTML

<form>
  <div>
    <input type="submit" value="subv1" name="subn1">
  </div>
  <script></script>
  <table></table>
  <table></table>
  <br>
  <input type="hidden" value="v1" name="n1">
  <input type="hidden" value="v2" name="n2">
  <input type="submit" value="subv2" name="subn2">
</form>  

【问题讨论】:

    标签: c# html html-agility-pack


    【解决方案1】:

    调用HtmlNode.ElementsFlags.Remove("form")在加载文档之前。以下工作正常:

    public static void Main()
    {
        HtmlNode.ElementsFlags.Remove("form");
    
        var doc = new HtmlDocument();
        doc.Load("HtmlPage1.html");
    
        HtmlNode formNode = doc.DocumentNode.SelectNodes("//form")[0];
        foreach (HtmlNode innode in formNode.Elements("input"))
        {
            Console.WriteLine(innode.OuterHtml);
        }
    
        Console.WriteLine("Press Enter to exit...");
        Console.ReadLine();
    }
    

    【讨论】:

      猜你喜欢
      • 2011-01-24
      • 1970-01-01
      • 2016-12-05
      • 2013-01-24
      • 2016-04-15
      • 1970-01-01
      • 2011-04-21
      • 2023-04-04
      • 2011-02-10
      相关资源
      最近更新 更多