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