Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/333.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# HtmlAgilityPack SelectSingleNode返回一个没有InnerHtml的HtmlNode_C#_Html_Dom_Xpath_Html Agility Pack - Fatal编程技术网

C# HtmlAgilityPack SelectSingleNode返回一个没有InnerHtml的HtmlNode

C# HtmlAgilityPack SelectSingleNode返回一个没有InnerHtml的HtmlNode,c#,html,dom,xpath,html-agility-pack,C#,Html,Dom,Xpath,Html Agility Pack,我对SelectSingleNode方法有点困惑。 我向它传递了一个简单的xpath表达式,希望得到包含完整内容的节点,所有嵌套节点,但实际上只检索一个html标记,而不包含任何内部和外部文本,并且节点不包含任何child Xpath: //form 以下是html: <HTML> <BODY> <FORM METHOD="POST" ACTION="https://test.com/action"> <INPUT TYPE="hidden" NAME

我对SelectSingleNode方法有点困惑。 我向它传递了一个简单的xpath表达式,希望得到包含完整内容的节点,所有嵌套节点,但实际上只检索一个html标记,而不包含任何内部和外部文本,并且节点不包含任何child

Xpath:

//form
以下是html:

<HTML>
<BODY>
<FORM METHOD="POST" ACTION="https://test.com/action">
<INPUT TYPE="hidden" NAME="attribute1" VALUE="some value"/>
<INPUT TYPE="hidden" NAME="attribute2" VALUE="another value"/>
</FORM>
</BODY>
</HTML>

有一种方法:

    public List<Parameter> CollectFilledInputsFromResponseForm(IRestResponse response, string formXpath)
    {
        var responseAsHtml = new HtmlDocument();
        responseAsHtml.LoadHtml(response.Content);
        var formDoc = responseAsHtml.DocumentNode.SelectSingleNode(formXpath);

        if (formDoc == null)
            throw new Exception(string.Format("No form found for '.{0}' xPath", formXpath));

        var formHtml = new HtmlDocument();
        formHtml.LoadHtml(formDoc.OuterHtml);
        var inputs = formHtml.DocumentNode.SelectNodes("//input");

        var parameters = new List<Parameter>();
        foreach (var input in inputs)
        {
            var name = input.GetAttributeValue("name", "Name not found");
            var value = input.GetAttributeValue("value", "Value not found");

            if (name.Equals("Name not found") || value.Equals("Value not found"))
                continue;

            parameters.Add(new Parameter(){Name = name,Value = value,Type = ParameterType.GetOrPost});
        }

        return parameters;
    }
public List collectedFilledInputsFromResponseForm(IREStreponse响应,字符串形式XPath)
{
var responseAsHtml=新的HtmlDocument();
responseAsHtml.LoadHtml(response.Content);
var formDoc=responseAsHtml.DocumentNode.SelectSingleNode(formXpath);
if(formDoc==null)
抛出新异常(string.Format(“找不到“{0}”xPath的表单”,formXpath));
var formHtml=新的HtmlDocument();
LoadHtml(formDoc.OuterHtml);
var inputs=formHtml.DocumentNode.SelectNodes(“//输入”);
var参数=新列表();
foreach(输入中的var输入)
{
var name=input.GetAttributeValue(“名称”,“未找到名称”);
var value=input.GetAttributeValue(“值”,“未找到值”);
if(name.Equals(“name not found”)| | value.Equals(“value not found”))
继续;
添加(新参数(){Name=Name,Value=Value,Type=ParameterType.GetOrPost});
}
返回参数;
}

请给我一些建议

Do
HtmlNode.ElementsFlags.Remove(“表单”)加载文档之前

Do
HtmlNode.ElementsFlags.Remove(“表单”)加载文档之前