2009-07-22 1 views
1

は、私は次のように格納する要素の数を持っていると仮定します。簡単な解析のために、複数の項目をXMLファイルに保存するにはどうすればよいですか?

fruitList = "apple", "orange", "banana", "kiwi", ... 

あなたがXMLでこれらを保存するだろうか?

<FruitList>"apple", "orange", "banana", "kiwi"</FruitList> 

OR

<Fruits Type="Expensive" List="apple", "orange", "banana", "kiwi"> </Fruits> 

良い方法はありますか?

<FruitList> 
    "apple", 
    "orange", 
    "banana", 
    "kiwi" 
</FruitList> 

答えて

15
<Fruits> 
<Fruit>Apple</Fruit> 
<Fruit>Orange</Fruit> 
</Fruits> 
+0

おかげで、良いアイデア。 –

+0

私はまだシリアライザの使用をお勧めします。メタデータを保持するオブジェクトを作成し、XMLをシリアル化します。 –

+0

ブライアンに感謝しますが、私がやっていることは違います。私はアプリにロードするためのいくつかの外部プログラム設定を保存するだけです。例ははっきりしないかもしれませんが、XMLにもっと多くのものを追加できるのはユーザーです。 –

1

はあなたを持っている:項目のフォーマットは以下のようなものに変更された場合、解析は変更する必要がないように、私は簡単にリストを解析することができますどのように選択されているどのような方法

、 XmlSerializerクラスをチェックアウトしましたか?これは有用であり、生成したパースリストを確実に処理できます。 (それはしかし、あなたが望むまさにそれだかどうかわからない。)

あなたのケースで
+0

ありがとうございます。はい、これはアプリの設定自体を保存するためのものです。 –

0

あなただけ

<Fruits> 
    <string>Apple</string> 
    <string>Orange</string> 
</Fruits> 

にシリアライズでしょう、あなたのクラスのどこかで

List<string> Fruits; 

を持っている可能性があり、私は信じています。オブジェクトのネストされたリストで、より複雑なものについては

、あなたはそうのようなリストとしてクラスのフルーツを宣言することがあります:

[Serializable] 
public class Fruits: List<Fruit> 
{ 
    // empty public constructor to make it serializable 
    public Fruits() 
    { 
    } 

    // ... 
} 

例えばあなたが置くことができないだろうケースがありますが、リスト<フレーバー>を直接Fruitクラスに入れ、リストのリストをシリアライズしてください(リストの配列か配列のリストでしたか?忘れてしまいました。あなたは、別のクラスのフレーバーが必要です:リスト<フレーバー>など。あなたがその内容を解析するXMLパーサを使用できるように

0

最初の場所でXMLを使用する唯一の理由です。これは、スキーマや変換(XMLのシリアライゼーション)など、XMLを本当に便利にするツールで作業を開始すると、はっきりと分かります。テキストコンテンツに埋め込んだデータ構造はこれらのツールでは利用できません。