Как я могу сделать 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
. Как я могу это сделать?
3 ответа:
чтобы собрать все это вместе - это прекрасно работает для меня:
// To Clean XML public string SerializeToString<T>(T value) { var emptyNamespaces = 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.Сериализация (xmlWriter, objectToSerialize)как описано здесь.