C#でXMLライターからXML Elementオブジェクトを作成します
質問
私はC#でWindowsサービスを書いています。私は、XSLT変換の出力が含まれているXmlWriter
を持っています。私は、Webサービスに渡すXMLElement
オブジェクトにXMLを取得する必要があります。
これを行うための最善の方法は何ですか?
解決
あなたが中間の文字列を必要としない、あなたがたXmlNodeに直接書き込みを行うのXmlWriterを作成することができます:
XmlDocument doc = new XmlDocument();
using (XmlWriter xw = doc.CreateNavigator().AppendChild()) {
// Write to `xw` here.
// Nodes written to `xw` will not appear in the document
// until `xw` is closed/disposed.
}
と、変換の出力としてXWを渡す。
NB。 XSLの一部:常にXmlDocumentが独自の設定を使用するので、出力(例えば符号化)は無視されます
。他のヒント
さて、XmlWriter
はのの出力が含まれていません。一般的に、あなたはダンピング場所であるバッキングオブジェクト(多分StringBuilder
またはMemoryStream
)を持っています。
StringBuilder
は多分...おそらくのようなものが最も効率的です
StringBuilder sb = new StringBuilder();
using (XmlWriter writer = XmlWriter.Create(sb))
{
// TODO write to writer via xslt
}
string xml = sb.ToString();
XmlDocument doc = new XmlDocument();
doc.LoadXml(xml);
XmlElement el = doc.DocumentElement;
あなたはライターを提供する場合は、出力発電機がデータを転送しているリポジトリを提供し、これリチャードのリプレイが良いですが、あなたは本当に常にXmlDocumentに読者からのデータを送信するための文字列ビルダを必要としません!
所属していません StackOverflow