2013-08-07 86 views
1

如何通过名称获取元素的节点。有GetElementById,为什么没有GetElementByName。有问题的元素是:htmlagilitypack通过名称获取元素的节点

<select class="box1" name="DAY" tabindex="31"> … </select> 

我希望能够得到这个节点。但我不知道如何。

皮特:请删除已回答此问题。这完全是错误去尝试一下。 node.Name不是属性'name'的名称,它的标记名不是我所需要的。

+0

Iv试过多次,我无法得到它的工作。 var forms = document.DocumentNode.Descendants(“form”);只给我1个后代

xe.Name ==“DAY”);以及0size集合 –

+0

错误的node.Name!='name = DAY'属性或w,e,它是 –

回答

2

您没有访问后代中“select”标签的名为“name”的节点属性。您正在使用标签的属性名称(xe.Name)。正确的做法可以是:

document.DocumentNode.Descendants("select").Where(node => node.GetAttributeValue("name", "").Equals("DAY", StringComparison.InvariantCultureIgnoreCase)); 
+1

请注意没有名称的节点,否则您将得到NullPointerException。 node.Attribute [“name”]。Value.Equals(“DAY”)可以用node.GetAttributeValue(“name”,“”)==“DAY”替换。 – sgbj

+1

我几分钟前意识到它。感谢您指出。另一个要小心的是字符串比较,你不能保证大小写,所以比较忽略大小写选项(使用string.Equals)更安全。 – natenho

相关问题