2017-12-09 8 views
-2

クラスがあり、このクラスをXMLファイルに保存する必要があります。私はこのクラスからより多くのオブジェクトを持っているので、すべてのオブジェクトを同じルートの下に追加する必要があります。私はこのようなXMLファイルから始めるクラスオブジェクトをXMLに保存する方法#

<?xml version="1.0" encoding="utf-8"?> 
<root> 
</root> 

私のクラスには、次のようになります。saveing後

class Save 
{ 
string a; 
string b; 
List<subClass> L1; 
List<subClass> L2; 


subClass 
{ 
    string c; 
    double d; 
} 
} 

xmlファイルは次のようになります。

<?xml version="1.0" encoding="utf-8"?> 
<root> 
<object> 
    <Element1>a</Element1> 
    <Element2>b</Element2> 
    <objectListL1> 
    <Element3>c</Element3> 
    <Element4>d</Element4> 
    </objectListL1> 
    ... 
    <objectListL2> 
    <Element3>c</Element3> 
    <Element4>d</Element4> 
    </objectListL2> 
    ... 
</object> 
</root> 

もちろん、objectListL1とobjectListL2は、List内のエントリが見つかるほど頻繁に繰り返されます。私はただクラスを作成し、すべてのデータを入力してclass.Save()を実行し、XMLファイルに新しいオブジェクトエントリを追加する必要があります。

+2

を[XmlSerializerを]使用(https://msdn.microsoft.com/en-us/library/system.xml。 serialization.xmlserializer(v = vs.110).aspx)はオプションではありませんか? – Odrai

+1

[オブジェクトをXMLにシリアル化する](https://stackoverflow.com/questions/4123590/serialize-an-object-to-xml)の可能な複製 – Odrai

答えて

0

は、私は私が簡単な解決策を見つけたと思う:

XmlSerializer serializer = new XmlSerializer(typeof(CLASSNAME)); 
      StreamWriter sw = File.AppendText(FILEPATH); 
      using (sw) 
      { 
       serializer.Serialize(sw, OBJECT); 
      } 

この

は、ファイルFILEPATHを作成し、そこにすべてをシリアライズします。それは "AppendText"であるので、それはリストオブジョブと一緒に使うことができます!添付が必要とされていない場合

、代わりのStreamWriterの1を使用することができます。

using (TextWriter writer = new StreamWriter(FILEPATH)) 
+0

ファイルが空でない場合、 'AppendText'のためファイルにデータを追加します。どのようにそれらを読むか?代わりに 'Create *'または 'Open *'メソッドを使用してください。 'new StreamWriter'や' new FileStream'も良い解決策です。 –

関連する問題