свернуть все элементы для загруженного XML в элементе управления веб-браузера, используя c # - PullRequest
0 голосов
/ 21 февраля 2012

Я использую System.Windows.Forms.WebBrowser для отображения XML в выделенном синтаксисе и в удобном для просмотра формате.Всякий раз, когда я загружаю XML в Control, я хотел бы свернуть все элементы, возможно ли это?

1 Ответ

2 голосов
/ 29 августа 2012

Это вызывается обработчиком события DocumentCompleted.

это была полезная ссылка, чтобы помочь с внедрением java-скрипта:

Как выполнить пользовательский JavaScript в элементе управления WebBrowser?

Я использовал следующий код.

    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...
        }
    }
...