假设我有许多要存储的元素,如:
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>
答案 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序列化))时,这变得非常清晰:嵌入文本内容的任何数据结构都不可用于这些工具。