質問

私は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に読者からのデータを送信するための文字列ビルダを必要としません!

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top