.htmlファイル> HTMLAgilityPack>ツリービュー階層

c# html html-agility-pack treeview

質問

HTMLAgilityPack + TreeViewを使用してHTMLファイルの階層GUIを作成するHTMLファイルはCMSで生成されたもので、あまりうまく生成されません。

以下を行う必要があります。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.アウトラインレベル0のノードをそれぞれのアウトラインレベル0ノードの子として読み取ります。 注:アウトラインレベル0の各ノード(この質問では重要ではないもの)は、 <li><object><param /></object>閉鎖の欠如に気付く</li>タグ)。 TreeViewに子として表示する必要があるノードは、レベル0ノードの<li>タグの次の兄弟である順序付けられていないリスト<ul>になります。

HtmlNodeCollection ZeroLevelNodes = doc.DocumentNode.SelectNodes("//body/object[@type='text/sitemap']|//body/ul/object[@type='text/sitemap']|//body/ul/li/object[@type='text/sitemap']");

ここでは階層の最上位レベルを生成するための私の現在のコードです

HtmlNodeCollection ZeroLevelNodes = doc.DocumentNode.SelectNodes("//body/object[@type='text/sitemap']|//body/ul/object[@type='text/sitemap']|//body/ul/li/object[@type='text/sitemap']");

誰も私にTreeViewに "子供"(アウトラインレベル1)ノードをロードするために必要なコードを私に与えることができますか? (AddNode(zeroLevelNode、tNode)

人気のある回答

このようなもの?

HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument();
doc.LoadHtml(html);
TreeNode root = new TreeNode("HTML");
treeView1.Nodes.Add(root);

LoadTree(root, doc.DocumentNode);


void LoadTree(TreeNode treeNode, HtmlAgilityPack.HtmlNode rootNode)
{
    foreach (var node in rootNode.ChildNodes.Where(n=>n.Name!="#text"))
    {
        TreeNode n = new TreeNode(node.Name);
        node.Attributes.Select(a => a.Name + "=" + a.Value)
                       .ToList()
                       .ForEach(x => n.Nodes.Add(x));
        treeNode.Nodes.Add(n);

        LoadTree(n, node);
    }
}



ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ
ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ