没有XML属性节点的C#中的XML序列化

Ale*_*all 2 c# xml xml-serialization

我有遗留系统的XML文档格式,我必须在将来的应用程序中支持.我希望能够在XML和C#对象之间序列化和反序列化XML,但是,使用xsd.exe生成的对象,C#序列化包括xmlns:xsi ...,xsi:... etc XML属性生成的文档的根元素.无论如何要禁用它,以便绝对没有XML属性节点被放在生成的XML中?XML文档应该只是元素.


重复? XmlSerializer:删除不必要的xsi和xsd命名空间

Che*_*eso 7

是的,使用XmlSerializerNamespaces类.

例:

  var s= new System.Xml.Serialization.XmlSerializer(typeof(TypeToSerialize));
  var ns= new System.Xml.Serialization.XmlSerializerNamespaces();
  ns.Add( "", "");
  System.IO.StreamWriter writer= System.IO.File.CreateText(filePath);
  s.Serialize(writer, objectToSerialize, ns);
  writer.Close();
Run Code Online (Sandbox Code Playgroud)

另请参阅:XmlSerializer:删除不必要的xsi和xsd名称空间