私が使用しているファイル形式 (OFX) は XML に似ており、XML に似た部分が始まる前に多数のプレーン テキストが含まれています。ただし、プレーンテキスト部分と XML 部分の間にあるのは好きではないので、XmlSerialiser にそれを無視させる方法があるかどうか疑問に思っています。ファイルを調べてその行を消去できることはわかっていますが、最初から書き込まない方が簡単でクリーンです! 何か案は?
質問する
258 次
2 に答える
6
メソッドを呼び出すときに使用する XML ライター オブジェクトを操作する必要がありますSerialize
。そのSettings
プロパティにはOmitXmlDeclaration
プロパティがあり、これを true に設定します。また、プロパティを設定する必要があります。ConformanceLevel
そうしないと、XmlWriter はOmitXmlDeclaration
プロパティを無視します。
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();
于 2009-09-09T13:31:18.473 に答える
4
それほど難しいことではありません。明示的に宣言された XmlWriter にシリアル化し、シリアル化する前にそのライターにオプションを設定するだけです。
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();
}
}
于 2009-09-09T13:32:34.760 に答える