0

私が本当に必要としているのは、コンポーネントで XML を表示することです。これまで、webbrowser コンポーネントを使用して XML データを表示してきましたが、コードは次のとおりです。

//XDocument loaded_xml = new XDocument();
        var stream = new MemoryStream();
        loaded_xml.Save(stream);
        stream.Position = 0;
        WebBrowser1.DocumentStream = stream;

問題は、Webブラウザでxmlをレンダリングしていないことですが、それを右クリックしてソースを表示すると、xmlコンテンツがそこにあります!!

最後に、XML を表示する他のコンポーネントがある場合は、それを学べてうれしいです:) よろしくお願いします...

4

1 に答える 1

1

IE で使用されるデフォルトの XSL の使用についての説明がここにあります。

これは、アクセスできないように見えるため、その記事からコピーして貼り付けたものです。クレジットは著者に送られます

Internet Explorer は、XML を適切な方法で表示します。今日、同じエンジンを使用して .NET 2.0 アプリケーションで XML を表示しようと考えました。そこで、WebBrowser コントロールをフォームにドロップし、XML 文字列を DocumentText プロパティに割り当てました。出来上がり?もちろん違います。

掘り下げた結果、IE は組み込みの XSLT 変換を使用して、ブラウザーで XML を HTML として表示することがわかりました。問題のスタイルシートは、IE の次の uri から入手できます: res://msxml.dll/defaultss.xsl。では、この文字列を保存して .NET で使用できますか? そうではありません。結局のところ、IE が使用する XSL は .NET の XslCompiledTransform クラスと互換性がありません。ああ!

さらに掘り下げた結果、Steve Muench が .NET に必要な XSLT 1.0 REC への変換を行ったことが判明しました。ありがとう!ファイルはこちらからダウンロードできます。

次のコードを WebBrowser 基本クラスに追加して、開発者がプロ​​パティを設定して XML を表示できるようにしました。

public XmlDocument DocumentXml
{
set
{
Stream s = <defaultss.xsl from embedded resource file>

XmlReader xr = XmlReader.Create(s);
XslCompiledTransform xct = new XslCompiledTransform();
xct.Load(xr);

StringBuilder sb = new StringBuilder();
XmlWriter xw = XmlWriter.Create(sb);
xct.Transform(value, xw);

this.DocumentText = sb.ToString();
}
}
于 2012-04-24T06:18:01.807 に答える