C# 将 html 文档与 TreeView 绑定(bind)

标签 c# html data-binding treeview hierarchical-data

我正在通过对 TreeView 进行更改来制作此 html 编辑器(使用 HtmlAgilityPack)- 更改必须与加载的文档并行进行,

将 htmlNode 与 treeNode 相关联的最佳方式是什么(我认为这与 XmlNode 完全相同)。我有一些想法,但我想知道是否有一些好的解决方案。

最佳答案

到目前为止还没有人提供帮助,我发布了我这样做的方法,但是,如果有人提供更好的解决方案,我会接受。

    public void bind(HtmlNode htmlN, TreeNode treeN)
    {

        StringBuilder result = new StringBuilder();
        switch (htmlN.NodeType)
        {
            case HtmlNodeType.Comment :
                result.Append(htmlN.InnerText);
                break;
            case HtmlNodeType.Document :
                result.Append("root");
                break;
            case HtmlNodeType.Element :
                result.Append('<').Append(htmlN.Name).Append('>');
                break;
            case HtmlNodeType.Text :
                result.Append(htmlN.InnerText );
                break;
            default:
                result.Append("undefined element");
                break;
        }

        treeN.Text = result.ToString(); 
        treeN.Name = htmlN.Name;
        treeN.Tag = htmlN;

        TreeNode newTN;

        foreach ( HtmlNode node in htmlN.ChildNodes ){
            if ( node.NodeType == HtmlNodeType.Element ||  node.InnerText.Trim().Length > 0 ){
                newTN = new TreeNode();
                treeN.Nodes.Add(newTN);
                bind(node, newTN);
            }
        }
    }

关于C# 将 html 文档与 TreeView 绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20241753/

相关文章:

MVVM 组单选按钮

c# - 在运行时设置强类型数据集连接字符串的最佳方法?

c# - 我什么时候启动和处置我的用户控件?

html - CSS 网格和图像叠加

javascript - 如何使 SVG 在 Skrollr 代码中固定在滚动条上?

.net - 为什么我的 TextBox 数据绑定(bind)不起作用?

c# - 在 CaSTLe Windsor 中的其他类之间共享类的实例

c# - 在添加 Azure 逻辑应用程序中使用 (HttpTrigger – C#) 的 Azure 函数

javascript - 如何设置 <alt> 标签字符串的样式?

Silverlight - 使用 MVVM 动态地将椭圆添加到 Canvas