代码之家  ›  专栏  ›  技术社区  ›  Grzenio

如何使XmlSerializer只序列化纯XML?

  •  61
  • Grzenio  · 技术社区  · 15 年前

    我需要得到纯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 回复  |  直到 6 年前
        1
  •  154
  •   KOGI    6 年前

    把这一切放在一起-这对我来说是完美的:

        // 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, emptyNamespaces);
                return stream.ToString();
            }
        }
    
        2
  •  21
  •   kossib    15 年前

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

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

    传递空数组或空数组不起作用

        3
  •  13
  •   Chris    8 年前

    你可以使用 XML写入设置 并设置属性 省略XML声明 忠实于 described in the msdn . 然后使用 XmlSerializer.Serialize(XmlWriter,ObjectToSerialize) as described here .