0

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

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

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

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

我该如何解决?如果我这样做会在课堂上选择时中断,哪个应该区分大小写?

4

1 回答 1

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属性不需要特殊的比较器。

于 2012-07-27T11:49:19.250 回答