将C#类序列化为xml.将XML作为字符串存储在SQL Server中,然后稍后还原该类

Bri*_*anK 8 .net c# xml-serialization

我想将类序列化为xml并将其存储在数据库的字段中.我可以用这个序列化:

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

xmlser.Serialize(sw, myClassVariable);
string s = sw.ToString();
sw.Close();
Run Code Online (Sandbox Code Playgroud)

这是有效的,但它有名称空间.

<.... xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
      xmlns:xsd="http://www.w3.org/2001/XMLSchema">
Run Code Online (Sandbox Code Playgroud)

这些会减慢反序列化的速度,因为它会传递给那些并验证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> 
Run Code Online (Sandbox Code Playgroud)

我的问题是:是否有必要使用反序列化的名称,如果没有,如何摆脱它们?我如何告诉它字段是整数,因此它不会输入"anytype"

谢谢,Brian

ito*_*son 7

不,这些命名空间不会减慢反序列化的速度.这些URI不是序列化程序访问的Web端点:它们只是标识符 - 碰巧使用Web URI方案的标签,以保证唯一性.你可以安全地离开他们.