【发布时间】:2020-01-31 14:58:19
【问题描述】:
如果我有如下 XML:
<?xml version="1.0" encoding="UTF-8" ?>
<Config>
<Interface>
<Theme>Dark</Theme>
<Mode>Advanced</Mode>
</Interface>
<Export>
<Destination>\\server1.example.com</Destination>
<Destination>\\server2.example.com</Destination>
<Destination>\\server3.example.com</Destination>
</Export>
</Config>
我可以通过以下方法轻松反序列化XML并获取“接口”部分中的元素值:
using System;
using System.IO;
using System.Xml.Serialization;
static void Main(string[] args)
{
var serializer = new XmlSerializer(typeof(Config));
using (var stream = new FileStream(@"C:\Temp\Config.xml", FileMode.Open, FileAccess.Read, FileShare.Read))
{
var config = (Config)serializer.Deserialize(stream);
Console.WriteLine($"Theme: {config.Interface.Theme}");
Console.WriteLine($"Mode: {config.Interface.Mode}");
Console.ReadKey();
}
}
[Serializable, XmlRoot("Config")]
public class Config
{
public Interface Interface { get; set; }
}
public struct Interface
{
public string Theme { get; set; }
public string Mode { get; set; }
}
我应该如何反序列化“导出”部分中的“目标”元素数组,以便循环遍历数组对象以打印值?
即
foreach (destination d in export)
{
Console.WriteLine(destination);
}
【问题讨论】:
-
你可以这样使用:
cs public class Export { public List<string> Destination { get; set; } } public class Config { public Interface Interface { get; set; } public Export Export { get; set; } } -
我确实尝试过,但是当我尝试执行
Console.WriteLine(config.Export.Destination[0]);时,它只会导致“索引超出范围”@
标签: c# arrays xml serialization