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)
谁能告诉我出了什么问题?谢谢
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)
| 归档时间: |
|
| 查看次数: |
6171 次 |
| 最近记录: |