我正在尝试按类型选择元素
//input[(@type = 'checkbox' or @type = 'radio') and @name = 'BigBobMcNob']
但它不匹配,因为我的类型是大写的
<input type='Checkbox' name='BigBobMcNob' />
我该如何解决?如果我这样做会在课堂上选择时中断,哪个应该区分大小写?
我正在尝试按类型选择元素
//input[(@type = 'checkbox' or @type = 'radio') and @name = 'BigBobMcNob']
但它不匹配,因为我的类型是大写的
<input type='Checkbox' name='BigBobMcNob' />
我该如何解决?如果我这样做会在课堂上选择时中断,哪个应该区分大小写?
您可以遍历节点集合并根据您的条件检查每个节点,如下所示:
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
属性不需要特殊的比较器。