我怎样才能使xmlserializer只序列化纯XML?

我需要得到普通的XML,在开始时没有<?xml version="1.0" encoding="utf-16"?>xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"来自XmlSerializer第一个元素。 我该怎么做?

把这一切放在一起 – 这完全适合我:

  // To Clean XML public string SerializeToString(T value) { var emptyNamepsaces = new XmlSerializerNamespaces(new[] { XmlQualifiedName.Empty }); var serializer = new XmlSerializer(value.GetType()); var settings = new XmlWriterSettings(); settings.Indent = true; settings.OmitXmlDeclaration = true; using (var stream = new StringWriter()) using (var writer = XmlWriter.Create(stream, settings)) { serializer.Serialize(writer, value, emptyNamepsaces); return stream.ToString(); } } 

使用XmlSerializer.Serialize方法重载,您可以在其中指定自定义命名空间并通过此处传递。

 var emptyNs = new XmlSerializerNamespaces(new[] { XmlQualifiedName.Empty }); serializer.Serialize(xmlWriter, objectToSerialze, emptyNs); 

传递null或空数组不会做伎俩

您可以使用XmlWriterSettings并将属性OmitXmlDeclaration设置为true, 如msdn中所述 。 然后按照 此处所述使用XmlSerializer.Serialize(xmlWriter,objectToSerialize)