【发布时间】:2015-07-28 09:19:57
【问题描述】:
目标: - 反序列化 xml 文档中的数据并将其存储为数组。 - 避免手动将数据分配给不同的字符串。 - xml文档会手动生成
public void DeserializeObject(string filename)
{
try
{
XmlSerializer deserializer = new XmlSerializer(typeof(string[]));
FileStream fs = new FileStream(filename, FileMode.Open);
string[] XmlData = (string[])deserializer.Deserialize(fs);
foreach (string p in XmlData)
{
Console.WriteLine(p);
}
}
catch (Exception e)
{
Console.WriteLine(e.Message);
}
}
XML文档如下
<?xml version="1.0" encoding="utf-8"?>
<Mapping xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<Products>
<Product>
<software>Seiko</software>
</Product>
<Product>
<hardware>Martina</hardware>
</Product>
</Products>
</Mapping>
【问题讨论】:
-
好吧,您的 XML 文件不是字符串数组 - 它是
List<Product>或类似的序列化形式... -
您已将序列化程序设置为 string[] 类型。生成的反序列化 xml 将不是字符串数组。它将是一个 Mapping 类型的对象,其中包含一个 Products 对象,该对象包含一个 Product 对象数组等。您需要构建您的类。
-
我怎样才能最好地使它成为一个数组 XML
-
@JerryMbawa XML 不能只是一个数组。必须有一个封闭类型。
-
如果您使用的是 .Net framework 4.5,您可以按照此处的说明从 xml 生成类型。 msdn.microsoft.com/en-us/library/hh371548(v=vs.110).aspx 打开要使用代理的代码文件。此文件应该是 .NET Framework 4.5 项目的一部分。将光标放在文件中任何现有类之外的位置。选择编辑、选择性粘贴、将 XML 粘贴为类。从 xml 生成类型后,您可以使用它来反序列化您的 xml
标签: c# xml xml-deserialization