HTMLAgilityPack和分离

时间:2011-05-23 20:38:34

标签: html-agility-pack

我有一些html,由<br/>分隔,例如:

Jack Janson
<br/>
309 123 456
<br/>
My Special Street 43

检索3列中信息的最简单方法是什么?

我不是XPath专家,所以另一种方法是在换行符上分隔字符串,然后使用数组。有更聪明的方法吗?

更新:忘记格式化代码。

1 个答案:

答案 0 :(得分:3)

在基于XML的纯XPATH中,您将使用这样的XPATH表达式://preceding-sibling::br//following-sibling::br(有关XPATH Axes的帮助,请参阅此处)

但是,您在Html Agility Pack中找到的XPATH over HTML实现不支持XPATH选择表达式中的纯文本节点或(属性节点)(//br/text()//br/@blah不适用于例)。请注意,它适用于过滤器,因此,这些//br[text()='blah']//br[@att='blah']可用。

所以,回到这个问题,你需要结合XPATH和代码,如下所示:

HtmlDocument doc = new HtmlDocument();
doc.Load(myHtmlFile);

foreach (HtmlNode p in doc.DocumentNode.SelectNodes("//br"))
{
    Console.WriteLine(p.PreviousSibling.InnerText.Trim());
}

那将输出

Jack Janson
309 123 456