我对XPath选择器有问题。当类名称返回char(或可能是由于其他原因!)时,它无法按类名称选择节点。有人可以帮助我吗?
var html =
@"<INPUT class=box value=John maxLength=16 size=16 name=user_name>
<INPUT class='
box1' value=Tony maxLength=16 size=16 name=user_name>
";
var htmlDoc = new HtmlDocument();
htmlDoc.LoadHtml(html);
var htmlNodes =
htmlDoc.DocumentNode.SelectNodes("//input[@class='box1']");
Console.WriteLine(htmlNodes == null);
htmlNodes = htmlDoc.DocumentNode.SelectNodes("//input[@class='box']");
Console.WriteLine(htmlNodes == null);
在第一个输入标签中,类名与class在同一行,但在第二个输入元素中,类名是在下一行。
第一个控制台的结果为 True ,第二个控制台的结果为 False
答案 0 :(得分:1)
问题是@class
的{{1}}值包含换行符和一些空格。因此,对表达式中谓词的检查
box1
失败,您得到//input[@class='box1']
的空检查。
您有两种方法可以解决此问题:
删除谓词中true
的所有空格/换行符,如下所示:
normalize-space
像这样从HTML代码段中删除换行符:
//input[normalize-space(@class)='box1']