除XML指令からXslCompiledTransform.変換出力
-
20-09-2019 - |
質問
を使用している XsltCompiledTransform
変換するコンテンへのフラグメントのHTMLではない完全なHTMLドキュメント、部門を含めますページが発生する)とする.
いくつかの変換として
StringBuilder output = new StringBuilder();
XmlReader rawData = BusinessObject.GetXml();
XmlWriter transformedData = XmlWriter.Create(output);
XslCompiledTransform transform = new XslCompiledTransform();
transform.Load("stylesheet.xslt");
transform.Transform(rawData, transformedData);
Response.Write(output.ToString());
私の問題は、結果の変換もこのXMLディレクティブ
<?xml version="1.0" encoding="utf-16"?>
たい本に登場する私の形データはもらえますか?
編集:
私語は、XSLTとなっていない場合については、出力をxml宣言
<xsl:output method="html" version="4.0" omit-xml-declaration="yes"/>
このように影響を及ぼしません指令に登場する私の出力に出力します。
興味深いことに、私のXMLデータソースマXSLT変換指定として自 UTF-8
ない UTF-16
.
更新:
は、UTF-16のように現れるので使用してい文字列ビルダー)として出力。時に変更したいコードを使用 MemoryStream
の代わりに StringBuilder
, 私のUTF-8エンコーディングが保存されている。私はこの推測は、あなたの内部構造 string
型どのようなエンコーディングです。
解決
ご使用する必要があり XmlWriterSettings
オブジェクトです。設定を省略はXML宣言でのコンストラクタの XmlWriter
.
StringBuilder output = new StringBuilder();
XmlReader rawData = BusinessObject.GetXml();
XmlWriterSettings writerSettings = new XmlWriterSettings();
writerSettings.OmitXmlDeclaration = true;
using (XmlWriter transformedData = XmlWriter.Create(output, writerSettings))
{
XslCompiledTransform transform = new XslCompiledTransform();
transform.Load("stylesheet.xslt");
transform.Transform(data, transformedData);
Response.Write(output.ToString());
}
他のヒント
最も簡単な方法ろこのノードにおXSLT:
<xsl:output
method="html"
omit-xml-declaration="yes"/>
所属していません StackOverflow