使用 .NET(在 SSIS 包中):
我在内存中有一个 XML 字符串,我需要将其作为 XML 文件保存到 Sql Server 中的 varbinary 列中。
似乎我应该能够避免实际将 .xml 文件保存到磁盘,并在内存中完成所有这些,但我不确定如何。我最初的想法是在 System.IO 中使用 File 类,但这个类似乎需要磁盘上的文件。
内存中有没有办法将 XML 字符串转换为其字节并将其保存到数据库中?
谢谢。
(我在 VB 中编码,但自然 C# 示例也很好)。
使用 .NET(在 SSIS 包中):
我在内存中有一个 XML 字符串,我需要将其作为 XML 文件保存到 Sql Server 中的 varbinary 列中。
似乎我应该能够避免实际将 .xml 文件保存到磁盘,并在内存中完成所有这些,但我不确定如何。我最初的想法是在 System.IO 中使用 File 类,但这个类似乎需要磁盘上的文件。
内存中有没有办法将 XML 字符串转换为其字节并将其保存到数据库中?
谢谢。
(我在 VB 中编码,但自然 C# 示例也很好)。
我希望它可以作为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();
}