通过 XPath 和 HtmlAgilityPack 获取属性的值
我有一个 HTML 文档,我用 XPath 解析它。我想获取元素输入的值,但没有成功。
我的 Html:
<tbody>
<tr>
<td>
<input type="text" name="item" value="10743" readonly="readonly" size="10"/>
</td>
</tr>
</tbody>
我的代码:
using HtmlAgilityPack;
HtmlAgilityPack.HtmlDocument doc;
HtmlWeb hw = new HtmlWeb();
HtmlNodeCollection node = doc.DocumentNode.SelectNodes("//input/@value");
string s=node[0].InnerText;
所以我想获取值:“10743”(而且我不介意获取带有答案的其他标签。)
I have a HTML document and I parse it with XPath. I want to get a value of the element input, but it didn't work.
My Html:
<tbody>
<tr>
<td>
<input type="text" name="item" value="10743" readonly="readonly" size="10"/>
</td>
</tr>
</tbody>
My code:
using HtmlAgilityPack;
HtmlAgilityPack.HtmlDocument doc;
HtmlWeb hw = new HtmlWeb();
HtmlNodeCollection node = doc.DocumentNode.SelectNodes("//input/@value");
string s=node[0].InnerText;
So I want to get the value: "10743" (and I don't mind to get another tags with the answer.)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
你可以在
.Attributes
集合中获取它:you can get it in
.Attributes
collection:如果您使用
HtmlNavigator
,您也可以直接获取该属性。You can also directly grab the attribute if you use the
HtmlNavigator
.更新2:以下是如何使用 Html Agility Pack 获取属性值的代码示例:
http://htmlagilitypack.codeplex.com/wikipage?title=Examples
您显然需要根据您的需要调整此代码 - 例如您不会修改属性,但只会使用att.Value。
更新:您还可以看看这个问题:
使用 html Agility Pack 选择属性值
您的问题很可能是默认命名空间问题 - 搜索“XPath default namespace c#”,您会发现很多好的解决方案(提示:使用重载
SelectNodes()
< /strong> 具有XmlNamespaceManager
参数)。以下代码显示了“无命名空间”中文档中属性的获取结果:
运行此应用程序的结果是:
现在,对于以下文档:位于默认命名空间中:
运行此应用程序会再次产生所需的结果:
Update2: Here is a code example how to get values of attributes using Html Agility Pack:
http://htmlagilitypack.codeplex.com/wikipage?title=Examples
You obviously need to adapt this code to your needs -- for example you will not modify the attributes, but will just use
att.Value
.Update: You may also look at this question:
Selecting attribute values with html Agility Pack
Your problem is most likely a default namespace problem -- search for "XPath default namespace c#" and you will find many good solutions (hint: use the overload of
SelectNodes()
that has anXmlNamespaceManager
argument).The following code shows what one gets for an attribute in a document in "no namespace":
The result from running this app is:
Now, for a document that is in a default namespace:
Running this app produces again the wanted results: