Das weglassen der XML-Verarbeitungsanweisung, wenn ein Objekt serialisieren
Ich bin serialisiert ein Objekt in eine C# VS2003 /.Net 1.1-Anwendung. Ich muss es serialisiert ohne die processing instruction, jedoch. Die XmlSerializer-Klasse stellt sich so etwas wie dieses:
<?xml version="1.0" encoding="utf-16" ?>
<MyObject>
<Property1>Data</Property1>
<Property2>More Data</Property2>
</MyObject>
Gibt es eine Möglichkeit, etwas zu bekommen, wie die folgenden, ohne Verarbeitung der resultierende text, um die Markierung entfernen?
<MyObject>
<Property1>Data</Property1>
<Property2>More Data</Property2>
</MyObject>
Für diejenigen, die neugierig sind, mein code sieht wie folgt aus...
XmlSerializer serializer = new XmlSerializer(typeof(MyObject));
StringBuilder builder = new StringBuilder();
using ( TextWriter stringWriter = new StringWriter(builder) )
{
serializer.Serialize(stringWriter, comments);
return builder.ToString();
}
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den folgenden link gelangen Sie zu einem Beitrag, wo jemand hat eine Methode zum ausblenden der Verarbeitungsanweisung durch die Verwendung eines XmlWriter und sich in eine 'Element' Staat eher als ein "Start" - Zustand. Dies bewirkt, dass die processing instruction nicht geschrieben werden.
Unterdrücken Processing Instruction
Machte ich eine kleine Korrektur
In 2.0, die Sie verwenden würden, XmLWriterSettings.OmitXmlDeclaration und serialisieren, um eine XmlWriter - aber ich glaube nicht, dass dies existiert in 1.1; also nicht ganz sinnvoll - aber nur noch ein "Upgrade" Sache... und ja, ich weiß es ist nicht immer möglich.
Was über namespaces weglassen ?
anstatt
ex:
Wenn Sie von "processing instruction" du meinst die xml-Deklaration, dann vermeiden Sie dies, indem Sie die OmitXmlDeclaration Eigenschaft von XmlWriterSettings. Sie müssen serialisieren mit einem XmlWriter, dies zu erreichen.
Aber ah, das beantwortet nicht deine Frage 1.1. Naja, für die Bezugnahme auf andere.
Funktioniert .NET 1.1. (Dennoch sollten Sie prüfen, aktualisieren)