C# で xml シリアライゼーション/デシリアライゼーションを使用して、既にビルドされた xml ファイルを更新できるかどうか疑問に思っていますか? また、ファイルに最初はルート ノードしかない場合、子ノードで更新できますか? (方法に関係なく?)
1 に答える
シリアル化されたデータの変更は、シリアル化の概念に反するため、XmlSerializer
はこれをサポートしていません。
ryadavilli が示唆したように、XmlDocument または XDocument を使用してノードを手動で追加/変更/削除できます。これは、以前のバージョンのオブジェクトのデータをシリアル化し、それらのドキュメントを新しいバージョンに更新する場合に非常に便利です。
ただし、現在のオブジェクト モデルがシリアル化されたデータと変わらない場合、逆シリアル化し、メモリ内のオブジェクトを変更し、再度シリアル化することを検討しましたか?
私が想像できる他の唯一のオプションは、 を実装し、とIXmlSerializable
の両方を開き、「挿入ポイント」に到達するまで各ノードをコピーすることです。次に、 を使用して変更されたデータを書き込み、その後コピーを続行します。すぐに使えるソリューションではないことは間違いありません。XmlReader
XmlWriter
XmlSerializer
コメントの質問については、XmlSerialization はオブジェクトをシリアル化および逆シリアル化するためのものであり、XDocument
(xml-linq) を使用すると xml ドキュメントを手動で作成できます。結果は同じかもしれませんが、本質的に異なることを行うため、どちらが優れているかは、何を達成したいかによって異なります。