2010-10-11 163 views
0

我需要解析HTML文檔以提取所有H1標籤和它們之間的所有HTML標籤。我一直在玩HtmlAgilityPack,取得了一些成功。我可以用提取所有H1標籤:如何獲取C#中H1標籤之間的HTML文本

foreach (HtmlNode node in doc.DocumentNode.SelectNodes("//h1"))

但我怎麼提取所有的HTML每H1標籤後,直到我打接下來的H1標籤?這個HTML可以包含任何來自表格/圖片/鏈接或HTML頁面上的任何其他東西,但H1標籤。

在此先感謝。

+0

我認爲你正在尋找一種不存在的餅乾刀具解決方案。你不能只選擇兩個隨機元素之間的所有XML元素,而不能選擇任何我聽說過的方法。你可以做的是NextElement與樹行爲行爲的某種組合,但你必須考慮H1可以嵌套,所以你不能只獲得下一個兄弟元素。 – jcolebrand 2010-10-12 00:01:39

+0

'H1'不允許嵌套,因爲'H1'只允許包含內聯元素。因此H1也不允許包含表格。儘管不是標準,但建議文檔中只有* 1個* H1元素。如果你控制HTML,你應該在解析它之前使它更多,呃,* sane *。 – 2010-10-12 00:21:09

回答

1

可能的解決方案: 獲取完整的HTML字符串,帶符號HTML替換< H1>不知道(例如ü,HTML使用& uuml;),然後由該符號分割字符串到一個數組。

現在您搜索(以RegEx爲例)具有開始AND結束標記並僅解析這些結點的節點。

快速和骯髒,但應該工作。

請注意,正如drachenstern提到的,嵌套的H1-Tags會導致父節點不被解析。

相關問題