使用HTML Agility Pack解析表单

use*_*450 0 c# html-agility-pack

我正在尝试从表单中提取所有输入元素.当我解析以下表格时:

<form>
<input name='test1' type='text'>
<input name='test2' type='text'>
<input name='test3' type='text'>
</form>
Run Code Online (Sandbox Code Playgroud)

一切都运行得很好,HTML Agility Pack能够检测表单中的输入元素,但如果它有如下所示的div父节点,则不会被检测到.

<form>
<div><input name='test1' type='text'></div>
<div><input name='test2' type='text'></div>
<div><input name='test3' type='text'></div>
</form>
Run Code Online (Sandbox Code Playgroud)

我正在使用以下代码

HtmlNode.ElementsFlags.Remove("form");

foreach (HtmlAgilityPack.HtmlNode node in postForm.Elements("input"))
{
    HtmlAgilityPack.HtmlAttribute valueAttribute = node.Attributes["value"];
}
Run Code Online (Sandbox Code Playgroud)

谁能告诉我出了什么问题?谢谢

Ale*_*lex 6

HtmlNode.Elements方法获取匹配名称的第一代子节点.将输入放入<div>标记后,它们将成为表单元素的第二代子节点.

要使代码工作,请使用HtmlNode.Descendants获取具有匹配名称的所有后代节点的方法:

foreach (HtmlAgilityPack.HtmlNode node in postForm.Descendants("input"))
{
   HtmlAgilityPack.HtmlAttribute valueAttribute = node.Attributes["value"];
}
Run Code Online (Sandbox Code Playgroud)