Сериализируйте класс C# к xml. Сохраните XML как строку в SQL Server и затем восстановите класс позже

Я хочу сериализировать класс к xml и хранилищу это в поле в базе данных. Я могу сериализировать с этим:

StringWriter sw = new StringWriter();
XmlSerializer xmlser = new XmlSerializer(typeof(MyClass));

xmlser.Serialize(sw, myClassVariable);
string s = sw.ToString();
sw.Close();

Это - работы, но это имеет пространства имен в нем.

<.... xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
      xmlns:xsd="http://www.w3.org/2001/XMLSchema">

Они замедлят десериализацию, потому что она выйдет к тем и проверит XML? Я избавился от пространств имен путем создания пустого XmlSerializerNamespaces и использования этого для сериализации, но затем xml все еще имел пространства имен вокруг целочисленных переменных:

<anyType xmlns:q1="http://www.w3.org/2001/XMLSchema"
         d3p1:type="q1:int"
         xmlns:d3p1="http://www.w3.org/2001/XMLSchema-instance">
  3
</anyType> 

Мой вопрос: действительно ли необходимо иметь пространства имен для десериализации и в противном случае как избавиться от них? Как я говорю этому, что поля являются ints, таким образом, это не вставляет "anytype"

Спасибо, Brian

8
задан marc_s 7 April 2010 в 06:33
поделиться

1 ответ

Нет, эти пространства имен не замедляют десериализацию. Эти URI не являются веб-конечными точками, которые посещает сериализатор: они всего лишь идентификаторы - метки, которые используют схему веб-URI, чтобы гарантировать уникальность. Вы можете спокойно оставить их.

7
ответ дан 5 December 2019 в 21:17
поделиться
Другие вопросы по тегам:

Похожие вопросы: