当前位置: 首页 > 编程语言 > C#

使用HTML敏捷包解析表单Share

时间:2023-04-10 19:25:29 C#

使用HTML敏捷包解析表单我正在尝试从表单中提取所有输入元素。当我解析以下表单时:一切正常,HTMLAgilityPack能够检测到表单中的输入元素,但如果它有如下所示的div父级,则不会检测到。我正在使用以下代码HtmlNode.ElementsFlags.Remove("form");foreach(HtmlAgilityPack.HtmlNodenodeinpostForm.Elements("input")){HtmlAgilityPack.HtmlAttributevalueAttribute=node.Attributes["value"];谁能告诉我出了什么问题?感谢HtmlNode.Elements方法获取具有匹配名称的第一代子节点。一旦输入被放置在标记内,它们就成为表单元素的第二代子元素。要使代码正常工作,请使用HtmlNode.Descendants方法,该方法获取所有具有匹配名称的后代节点:"];我不记得“.Elements()”是做什么的,但我认为它只返回子节点......在你的情况下,你的表单的直接子节点是div。您可以使用XPATH进行更多控制:.SelectNodes("//form/div/input")这将返回表单中的输入节点列表,知道输入有一个div标记。在这里您可以看到带有示例的XPATH教程。使用Descendants()而不是Elements()——后者只适用于直系子元素,但是你的输入元素嵌套在div中:很有用,需要多了解C#学习教程,希望大家多多关注——foreach(HtmlAgilityPack.HtmlNode节点在postForm.Descendants("input")){HtmlAgilityPack.HtmlAttributevalueAttribute=node.Attributes["value"];}本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: