HTMLAgilityPack和分离

html-agility-pack

我有一些HTML,这是由分离<br/>例如:

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

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

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

更新:忘记格式化代码。

一般承认的答案

在基于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



许可下: CC-BY-SA with attribution
不隶属于 Stack Overflow
这个KB合法吗? 是的,了解原因
许可下: CC-BY-SA with attribution
不隶属于 Stack Overflow
这个KB合法吗? 是的,了解原因