2

.NET の使用 (SSIS パッケージ内):

XML ファイルとして、Sql Server の varbinary 列に保存する必要がある XML 文字列がメモリ内にあります。

.xml ファイルを実際にディスクに保存することを避け、これらすべてをメモリ内で実行できるはずですが、どうすればよいかわかりません。最初は System.IO の File クラスを使用することを考えていましたが、このクラスにはディスク上のファイルが必要なようです。

XML文字列をそのバイトに変換してDBに保存する方法はメモリ内にありますか?

ありがとう。

(私は VB でコーディングしていますが、当然 C# の例も問題ありません)。

4

1 に答える 1

1

私はそれが;としてうまくいくことを期待しています。byte[]そのため、文字列をシリアル化するだけです。xml が内部的に UTF8 としてタグ付けされている (またはまったくタグ付けされていない) と仮定すると、おそらく次のようになります。

var data = Encoding.UTF8.GetBytes(yourXmlString);

ただし、XML がUTF8 とは異なるエンコーディングで内部的にタグ付けされている場合、実際のエンコーディングは理想的には一致する必要があります (そうでない場合: 悪いこと)。

もちろん、 xml を作成している場合は、それをバイナリに直接書き込み、同時にエンコーディングを選択できます。Streamこれを行うには、 aと anEncodingを to に渡しますXmlWriter

byte[] bytes;
using (var ms = new MemoryStream())
{
    using(var xw = XmlWriter.Create(ms, new XmlWriterSettings { Encoding = Encoding.UTF8 }))
    {
        // write to xw, directly or indirectly
    }
    bytes = ms.ToArray();
}
于 2011-07-08T12:42:49.760 に答える