有些属性值不区分大小写(输入[类型])有些属于(* [类]) - Html Agility Pack如何处理?

时间:2012-07-25 16:18:01

标签: html-agility-pack

我正在尝试按类型选择元素

//input[(@type = 'checkbox' or @type = 'radio') and @name = 'BigBobMcNob']

但它不匹配,因为我的类型是大写的

<input type='Checkbox' name='BigBobMcNob' />

我该如何解决?如果我这样做,它会在课堂上选择时打破,这应该区分大小写?

1 个答案:

答案 0 :(得分:0)

您可以遍历节点集合并根据您的条件检查每个节点:

var allowedName = "Checkbox";
var allowedTypes = new[] { "checkbox", "radio" };
var nodes = doc.DocumentNode.DescendantNodes()
    .Where(n =>
        n.Name == "input" &&
        allowedTypes.Contains(n.GetAttributeValue("type", null), StringComparer.OrdinalIgnoreCase) &&
        n.GetAttributeValue("type", null) == allowedName
    ).ToList();

对于type属性比较,使用StringComparer.OrdinalIgnoreCase comparer; name属性不需要特殊的比较器。