2

使用 .NET(在 SSIS 包中):

我在内存中有一个 XML 字符串,我需要将其作为 XML 文件保存到 Sql Server 中的 varbinary 列中。

似乎我应该能够避免实际将 .xml 文件保存到磁盘,并在内存中完成所有这些,但我不确定如何。我最初的想法是在 System.IO 中使用 File 类,但这个类似乎需要磁盘上的文件。

内存中有没有办法将 XML 字符串转换为其字节并将其保存到数据库中?

谢谢。

(我在 VB 中编码,但自然 C# 示例也很好)。

4

1 回答 1

1

希望它可以作为byte[]; 所以你需要做的就是序列化字符串。如果我假设xml 在内部被标记为 UTF8(或根本没有标记),那么也许:

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

但是,请注意,如果您的 xml 在内部使用与 UTF8 不同的编码进行标记,则实际编码应该理想地匹配(否则:坏事)。

当然,如果你是创建xml,那么你可以直接写成二进制,同时选择编码。您可以通过传递 aStream和 anEncoding来做到这一点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 回答