Frage

Das Dateiformat I mit (OFX) bin arbeiten, ist XML-like und enthält eine Reihe von Klartext-Sachen vor dem XML-like Bit beginnt. Es ist nicht wie wenn zwischen dem Klartext und XML Teilen, so dass ich frage mich, ob es einen Weg gibt, zu erhalten XmlSerialiser dass zu ignorieren. Ich weiß, dass ich durch die Datei gehen könnte und diese Linie auszulöschen, aber es wäre einfacher und sauberer sein, es nicht in erster Linie zu schreiben! Irgendwelche Ideen?

War es hilfreich?

Lösung

Nicht zu hart, man muss nur die Serialisierung zu einem explizit erklärt XmlWriter und die Optionen auf diesem Schriftsteller, bevor Sie serialisiert wird.

public static string SerializeExplicit(SomeObject obj)
{    
    XmlWriterSettings settings;
    settings = new XmlWriterSettings();
    settings.OmitXmlDeclaration = true;

    XmlSerializerNamespaces ns;
    ns = new XmlSerializerNamespaces();
    ns.Add("", "");


    XmlSerializer serializer;
    serializer = new XmlSerializer(typeof(SomeObject));

    //Or, you can pass a stream in to this function and serialize to it.
    // or a file, or whatever - this just returns the string for demo purposes.
    StringBuilder sb = new StringBuilder();
    using(var xwriter = XmlWriter.Create(sb, settings))
    {

        serializer.Serialize(xwriter, obj, ns);
        return sb.ToString();
    }
}

Andere Tipps

Sie werden die XML-Writer-Objekt manipulieren müssen Sie verwenden beim Aufruf der Serialize Methode. Seine Settings Eigenschaft hat eine OmitXmlDeclaration Immobilien, die Sie auf true gesetzt werden soll. Sie werden auch die ConformanceLevel Eigenschaft festlegen müssen, da sonst die XmlWriter die OmitXmlDeclaration Eigenschaft ignorieren.

XmlWriterSettings settings = new XmlWriterSettings();
settings.OmitXmlDeclaration = true;
settings.ConformanceLevel = ConformanceLevel.Fragment;
XmlWriter writer = XmlWriter.Create(/*whatever stream you need*/,settings);
serializer.Serialize(writer,objectToSerialize);
writer.close();
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top