C#HtmlAgilityPack在LoadHtml函數後面添加tbody元素,即使在原始HTML文檔中不存在,也可以將其添加到表格中的DOM樹中。我如何禁用此功能?C#HtmlAgilityPack添加tbody
我的算法通過遍歷dom樹創建了一些XPATH表達式,原始文檔中的非現有tbody元素使SelectNodes找不到所需的項目。花了我很多時間來解決這個問題:|
是否有可能讓SelectNodes也考慮由HtmlAgilityPack添加的節點?
實施例:
<table>
<tr><td>data</td></tr>
</table>
我的應用將產生這種XPATH提取 '數據': //表/ TBODY/TR/TD
在表達的TBODY標記加到因爲它的在解析HTML代碼後由HtmlAgilityPack解析DOM樹,因爲即使它不存在,HtmlAgilityPack也會添加它。 因此
doc.DocumentNode.SelectNodes("//table/tbody/tr/td");
會失敗。
換句話說,tr元素(HtmlElement)父標記名等於'TBODY'而不是'TABLE'。另外我解析許多不同的網站,所以這是一種情況。
SelectNodes正在原始HTML代碼中進行搜索,而不是通過HtmlDocument.LoadHtml之後的DOM樹進行搜索,或者它不考慮它添加的「虛擬」元素。
我想你只需要將'tr/d'改爲'tr/td'。 – recursive