概要
XML を画面に表示する場合、System.Windows.Forms.WebBrowser コントロールを使用し、DocumentText プロパティに内容をセットすることで実現可能だが、タグ名に head などがある場合に上手く表示されない問題がある。
(head で始まる header 等でもダメ)
例
表示させるXML
<?xml version="1.0" encoding="utf-8"?>
<doc>
<header>ヘッダ</header>
<data>データ</data>
</doc>
IE で表示した場合、下図のようになる。
IE で表示 |
---|
通常
DocumentText に文字列を設定した場合は IE と同じように表示されない。。
コントロール内部で HTML の HEAD タグと誤認してそう。
WebBrowser で表示 1 |
---|
通常コード
this.webBrowser1.DocumentText = xml;
改良
XML 文字列を一旦ファイルに保存し、Navigate メソッドを呼ぶことで、IE と同じような表示となった。
WebBrowser で表示 2 |
---|
改良コード
var path = Path.Combine(Path.GetTempPath(), $"{Guid.NewGuid()}.xml");
File.WriteAllText(path, xml);
this.webBrowser1.Navigate(path);
File.Delete(path);