HTMLAgilityPack + TreeView を使用して、HTML ファイルの階層 GUI を作成します。HTML ファイルは CMS によって生成されたものであり、その時点ではあまり適切に生成されていません。
以下を実行する必要があります。 1. 各Outline Level 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;
}
「子」(アウトライン レベル 1) ノードを TreeView にロードするために必要なコードを教えてください。(AddNode(zeroLevelNode, tNode)