使用c#在webbrowser控件中折叠加载的xml的所有元素 [英] collapse all elements for loaded xml in webbrowser control using c#

查看:585
本文介绍了使用c#在webbrowser控件中折叠加载的xml的所有元素的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我使用System.Windows.Forms.WebBrowser以突出显示的语法显示XML,并且易于遍历格式。每当我将XML加载到控件中时,我想将所有元素折叠,这是否可能?

I am using the System.Windows.Forms.WebBrowser to display XML in a syntax highlighted and easy to traverse format. Whenever I load the XML into the Control, I would like to have all the elements collapsed, is this possible?

推荐答案

由DocumentCompleted事件处理程序触发。

This is triggered by the DocumentCompleted event handler.

这是一个有用的链接来帮助java脚本注入:

this was a useful link to help with java script injection:

a href =http://stackoverflow.com/questions/4517460/how-to-execute-custom-javascript-in-webbrowser-control>如何在WebBrowser控件中执行自定义JavaScript?

How to execute custom JavaScript in WebBrowser control?

我使用下面的代码。

    private void CollapseExpandDocument(object sender, WebBrowserDocumentCompletedEventArgs e)
    {
        if (sender == null)
        {
            return;
        }

        try
        {
            WebBrowser me = (WebBrowser) sender;
            HtmlElement head = me.Document.GetElementsByTagName("head")[0];
            HtmlElement scriptEl = me.Document.CreateElement("script");
            IHTMLScriptElement element = (IHTMLScriptElement)scriptEl.DomElement;
            string func = @"
                function collapseDoc() 
                {
                    var className = 'b';
                    var hasClassName = new RegExp('(?:^|\\s)' + className + '(?:$|\\s)');
                    var allElements = document.getElementsByTagName('a');
                    var element;
                    for (var i = 0; (element = allElements[i]) != null; i++) 
                    {
                        var elementClass = element.className;
                        if (elementClass && elementClass.indexOf(className) != -1 && hasClassName.test(elementClass))
                            ch(element.parentElement.parentElement);
                    }
                }";
            element.text = func;
            head.AppendChild(scriptEl);
            me.Document.InvokeScript("collapseDoc");
        }
        catch 
        { 
            //not interested in knowing if the collapse/expand failed...
        }
    }

这篇关于使用c#在webbrowser控件中折叠加载的xml的所有元素的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆