如何在XML文件中存储多个项目以便于解析?

时间:2009-07-22 17:50:26

标签: c# .net 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>

5 个答案:

答案 0 :(得分:15)

<Fruits>
 <Fruit>Apple</Fruit>
 <Fruit>Orange</Fruit>
</Fruits>

答案 1 :(得分:1)

您检查过XmlSerializer类吗?这可能很有用,它当然可以处理它生成的解析列表。 (不确定它是否正是你想要的。)

答案 2 :(得分:1)

如果您要存储应用程序设置,请查看System.Configuration Namespace中的类型,或使用Application Settings进行查看。

答案 3 :(得分:0)

在你的情况下,你可以拥有

List<string> Fruits;

在您的班级某处将序列化为

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

我相信。

对于更多涉及嵌套对象列表的内容,您可能希望将类如Fruit声明为如下所示:

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

    // ...
}

有些情况下你无法放置,例如List&lt; Flavors&gt;直接进入Fruit类并让它序列化一个列表列表(或者它是一个列表数组还是一个数组列表?我忘了 - 我知道我有这个问题);你需要另一个类Flavors:List&lt; Flavors&gt;等等。

答案 4 :(得分:0)

首先使用XML的唯一原因是您可以使用XML解析器来解析其内容。当您开始使用使XML真正有用的工具(如模式和转换(或XML序列化))时,这变得非常清晰:嵌入文本内容的任何数据结构都不可用于这些工具。