我有一些html,由<br/>
分隔,例如:
Jack Janson
<br/>
309 123 456
<br/>
My Special Street 43
检索3列中信息的最简单方法是什么?
我不是XPath专家,所以另一种方法是在换行符上分隔字符串,然后使用数组。有更聪明的方法吗?
更新:忘记格式化代码。
答案 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