我怎样才能使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) 。