C# 使用c在webbrowser控件中折叠已加载xml的所有元素#
我使用System.Windows.Forms.WebBrowser以突出显示的语法和易于遍历的格式显示XML。每当我将XML加载到控件中时,我都希望所有元素都折叠起来,这可能吗?这是由DocumentCompleted事件处理程序触发的 这是一个有助于java脚本注入的有用链接: 我使用了以下代码C# 使用c在webbrowser控件中折叠已加载xml的所有元素#,c#,xml,winforms,c#-4.0,webbrowser-control,C#,Xml,Winforms,C# 4.0,Webbrowser Control,我使用System.Windows.Forms.WebBrowser以突出显示的语法和易于遍历的格式显示XML。每当我将XML加载到控件中时,我都希望所有元素都折叠起来,这可能吗?这是由DocumentCompleted事件处理程序触发的 这是一个有助于java脚本注入的有用链接: 我使用了以下代码 private void CollapseExpandDocument(object sender, WebBrowserDocumentCompletedEventArgs e)
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...
}
}