C# WPF WebBrowser-内置搜索对话框不';如果内容加载了NavigateToString,则无法工作
我使用WebBrowser显示生成的XML。通过调用NavigateToString将我的XML字符串加载到浏览器中:C# WPF WebBrowser-内置搜索对话框不';如果内容加载了NavigateToString,则无法工作,c#,xml,wpf,navigation,webbrowser-control,C#,Xml,Wpf,Navigation,Webbrowser Control,我使用WebBrowser显示生成的XML。通过调用NavigateToString将我的XML字符串加载到浏览器中: var text = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" + Environment.NewLine + "<whatever/>"; Browser.NavigateToString(text); var text=“” +环境新线 + ""; Browser
var text = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>"
+ Environment.NewLine
+ "<whatever/>";
Browser.NavigateToString(text);
var text=“”
+环境新线
+ "";
Browser.NavigateToString(文本);
浏览器加载字符串内容后,我尝试使用标准的Ctrl+F搜索对话框搜索任何显示的文本,但它总是显示警告“未找到匹配项”
如果我将XML字符串保存到文件中并使用Browser.Navigate(文件名),它会工作
有什么想法吗?当您导航到一个文件时,
WebBrowser
控件执行MIME类型嗅探(通常使用文件扩展名作为提示)。然后创建相应类型的对象。它通常是的实例,但也可以是XML、PDF或Word文档,所有这些都支持活动文档接口
现在,当您使用NavigateToString
导航到字符串时,WebBrowser
不会尝试识别文档类型,只创建MSHTML文档(而不是XML文档)的实例,然后尝试将内容解析为HTML,但失败了
我认为使用NavigateToString
无法获得所需的行为,我相信这同样适用于NavigateToStream
。为了说明发生了什么,请将XML内容保存为filename.html
、filename.txt
和filename.XML
。尝试用IE打开每个文件
另一方面,当您导航到URL时,服务器实际上有一个使用HTTP头建议MIME类型的选项。浏览器可能会也可能不会容忍此类建议(它仍将执行一些验证检查)
底线:您将无法使用
导航字符串
或导航流
呈现XML。您必须首先将其转换为HTML(例如,使用XSLT转换) 我也有同样的问题。
甚至可以使用重载直接打开xml文件:
webbrowser.Navigate(string filepathToXML)
这样一来,内置的搜索面板就像一个魔咒 使用
StringBuilder
类而不是串联字符串,不确定这是否能解决问题,但值得一试。如果将字符串包装在html标记中,Browser.NavigateToString(string.Format(“{0}”,text))
@Tico感谢StringBuilder的提示,但在这里我试图使示例代码非常简单,以吸引对NavigateToString方法的注意。@Tico使用StringBuilder显然无法解决此问题。您可能还想查看MSDN类文档的备注部分,了解它的用法何时合适,何时不合适。如果您阅读了我的备注,您会发现我并没有建议它可以解决问题。字符串连接不合适,是吗?。。