首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用XpathNavigator和HtmlAgilityPack查找InnerHtml值

使用XpathNavigator和HtmlAgilityPack查找InnerHtml值
EN

Stack Overflow用户
提问于 2011-08-22 10:38:55
回答 3查看 2.5K关注 0票数 1

test.xml的一部分

代码语言:javascript
复制
<tr class="a"> 
    <td align="left" nowrap="true">desc1</td> 
    <td align="left">desc2</td>  
    <td>desc3</td>  
    <td align="left">desc4</td> 
    <td align="left">desc5</td>
    <td>desc6</td> 
    <td>desc7</td> 
    <td>desc8</td>
    <td class="nr">desc9</td>
</tr>

//创建XpathNavigator,获取td内部的最后一个值,即desc9

代码语言:javascript
复制
> HtmlDocument document = new HtmlDocument();
        document.Load(Server.MapPath("test.xml"));

        XPathNavigator xPathNavigator = document.CreateNavigator();
        object o = xPathNavigator.Evaluate("/table[1]/tbody[1]/tr[2]/td[9]");

调试器显示可以按如下方式计算该值,这非常麻烦。

代码语言:javascript
复制
((HtmlAgilityPack.HtmlNodeNavigator)((new System.Linq.SystemCore_EnumerableDebugView(((MS.Internal.Xml.XPath.XPathSelectionIterator)(o)))).Items[0])).Value

访问desc9的最佳方式是什么?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-08-22 21:23:12

我没有使用过XPathNavigator,但是这里有一个类似的解决方案,使用SelectNodes/SelectSingleNode风格和HTML Agility Pack。

代码语言:javascript
复制
string xPathSearch = "/table[1]/tbody[1]/tr[2]";
HtmlNode tableRow = doc.DocumentNode.SelectSingleNode(xPathSearch);
string description9 = tableRow.ChildNodes[9].InnerText;

代码语言:javascript
复制
string xPathSearch = "/table[1]/tbody[1]/tr[2]/td[9]";
HtmlNode tableColumn = doc.DocumentNode.SelectSingleNode(xPathSearch);
string description9 = tableColumn.InnerText;

仅供参考-关于HTML Agility包的最好的文档似乎是源代码中包含的示例。不确定为什么不在文档中单独下载。

票数 2
EN

Stack Overflow用户

发布于 2011-08-22 21:06:49

如下所示:

代码语言:javascript
复制
/table[1]/tbody[1]/tr[@class="a"]/td[last()]

看一看XPath Syntax

票数 0
EN

Stack Overflow用户

发布于 2011-08-22 21:23:30

我认为你做错了这件事。

我相信你所需要做的就是:

代码语言:javascript
复制
document.DocumentNode.SelectSingleNode("/table[1]/tbody[1]/tr[2]/td[9]");

我找不到可以链接到您的文档的在线副本,但您可以查看http://htmlagilitypack.codeplex.com/releases/view/44954上的文档以了解更多详细信息。

另外,如果您只是在阅读XML,那么您使用html敏捷包有什么原因吗?或者只有您的测试文件才是有效的XML?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7142661

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档