0
使用HTMLAgilityPack + TreeView創建HTML文件的層次結構GUI。這個HTML文件是由CMS生成的,並不是很好地生成的。.html文件> HTMLAgilityPack> TreeView層次
需要做以下操作: 1.將每個大綱級別0節點讀入TreeView。
HtmlNodeCollection ZeroLevelNodes = doc.DocumentNode.SelectNodes("//body/object[@type='text/sitemap']|//body/ul/object[@type='text/sitemap']|//body/ul/li/object[@type='text/sitemap']");
2.閱讀大綱級別1的節點作爲各自大綱級別的兒童0節點 注:每個大綱級別0點(上下浮動幾個是不是這個問題很重要)是奠定了作爲<li><object><param /></object>
(注意缺少關閉</li>
標籤)。需要出現兒童在TreeView將是一個無序列表<ul>
是0級節點的<li>
標籤的下一個兄弟節點,例如:
<ul>
<li>
<object>
<param name="**exampleLevel0**" value="**example.htm**" /> //value example.htm as the text in the level 0 node.
</object>
<ul>
<li>
<object>
<param name="**ExampleLevel1**" value="childnode.htm" /> //childnode.htm as the text in the level 1 child node.
</object>
<li>
<object>
<param name="**ExampleLevel1_2**" value="childnode2.htm" /> //childnode2.htm as the text in the level 1 child node.
</object>
</ul>
</ul>
這裏是我當前的代碼來獲得頂部層次
HtmlNodeCollection tocNodes = doc.DocumentNode.SelectNodes("//body/object[@type='text/sitemap']|//body/ul/object[@type='text/sitemap']|//body/ul/li/object[@type='text/sitemap']");
foreach (HtmlNode zeroLevelNode in zeroLevelNodes)
{
TreeNode tNode = new TreeNode();
HtmlNode paramNode = zeroLevelNode.SelectSingleNode("param[@name]");
string paramName = paramNode.GetAttributeValue("name", null);
string paramValue = paramNode.GetAttributeValue("value", null);
TreeView.Nodes.Add(new TreeNode(paramValue));
tNode = TreeView.Nodes[i];
AddNode(zeroLevelNode, tNode);
i += 1;
}
的-level誰能給我一個手加載「孩子」(大綱級別1)節點到TreeView中所需的代碼? (ADDNODE(zeroLevelNode,TNODE)
可能..你可以爲每行一個簡短的評論,所以我可以更好地理解它是如何工作的?我結束了使用中途到達那裏「parent :: li/child :: ul/descendant :: object」作爲節點集合選擇器,但是我需要考慮很多條件並且代碼看起來很乾淨:) – Techknowfile 2012-07-09 20:37:47
它是一個遞歸函數('LoadTree' ),在每一級找到子節點,將它們添加到樹中的當前節點('treeNode',它是0級的根節點),並遞歸地繼續與子節點相同的進程。我不知道如何更清楚地解釋它:( – 2012-07-09 20:49:51