Сохранение XML из строки в столбец varbinary в Sql Server 2005 .NET - PullRequest
2 голосов
/ 08 июля 2011

Использование .NET (в пакете служб SSIS):

У меня в памяти есть строка XML, которую мне нужно сохранить в столбце varbinary на Sql Server в виде файла XML.

Кажется, что я должен быть в состоянии избежать фактического сохранения XML-файла на диск и делать все это в памяти, но я не уверен, как это сделать. Сначала я хотел использовать класс File в System.IO, но для этого класса требуется файл на диске.

Есть ли в памяти способ преобразовать строку XML в ее байты и сохранить ее в БД?

Спасибо.

(я пишу на VB, но, естественно, примеры на C # тоже хороши).

1 Ответ

1 голос
/ 08 июля 2011

Я бы ожидал , что будет нормально работать как byte[];так что все, что вам нужно сделать, это сериализовать строку.Если я сделаю предположение о том, что xml помечен как UTF8 внутри (или вообще не помечен), то, возможно:* внутренне с кодировкой, отличной от UTF8, кодировка фактическая должна идеально соответствовать (иначе: плохие вещи).

Конечно, если вы создаете XML, то вы можете записать его непосредственно в двоичный файл и одновременно выбрать кодировку.Вы можете сделать это, передав Stream и Encoding 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();
}
...