XmlSerialiser が <?xml ?> で始まらないようにするにはどうすればよいですか?

StackOverflow https://stackoverflow.com/questions/1399657

  •  22-09-2019
  •  | 
  •  

質問

私が扱っているファイル形式 (OFX) は XML に似ており、XML に似た部分が始まる前に大量のプレーンテキストが含まれています。ただし、プレーンテキスト部分と XML 部分の間にあるのは好きではないので、XmlSerialiser にそれを無視させる方法があるかどうか疑問に思っています。ファイルを調べてその行を消去できることはわかっていますが、最初から書き込まないほうが簡単できれいです。何か案は?

役に立ちましたか?

解決

あまりにも厳しいないが、あなただけ明示的に宣言した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();
    }
}

他のヒント

を呼び出すときに使用する 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();
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top