97

<?xml version="1.0" encoding="utf-16"?>の先頭とxmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"最初の要素ではなく、プレーンな xml を取得する必要がありXmlSerializerます。どうすればいいですか?

4

4 に答える 4

236

これをすべてまとめると、これは私にとって完璧に機能します:

    // 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();
        }
    }
于 2010-09-17T02:10:32.217 に答える
27

XmlSerializer.Serializeカスタム名前空間を指定してそこに渡すことができるメソッド オーバーロードを使用します。

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

null または空の配列を渡してもうまくいかない

于 2009-11-22T22:11:39.267 に答える
15

msdn で説明されているように、XmlWriterSettingsを使用してプロパティOmitXmlDeclarationを true に設定できます。次に、ここで説明されているようにXmlSerializer.Serialize(xmlWriter, objectToSerialize)を使用します。

于 2009-11-20T17:49:15.290 に答える