【发布时间】:2018-06-11 16:55:59
【问题描述】:
我似乎无法让 XmlSerializer 属性工作。我有
public class DriveData
{
public string Model { get; set; }
public string Type { get; set; }
public int SizeGB { get; set; }
public string SerialNumber { get; set; }
public bool IsOK { get; set; }
}
static List<DriveData> DiskDrives { get; set; }
XmlSerializer serializer = new XmlSerializer(typeof(List<DriveData>));
FileStream xmlFile = File.Create("DiskDrives.xml");
serializer.Serialize(xmlFile, DiskDrives);
xmlFile.Close();
我想要的是:
<?xml version="1.0" encoding="utf-8" ?>
<HardDrives>
<HardDrive>
<Model>Seagate1</Model>
...
</HardDrive>
<HardDrive>
...
</HardDrive>
但我得到的是:
<?xml version="1.0"?>
<ArrayOfDriveData xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<DriveData>
<Model>Seagate1</Model>
<Type>SATA</Type>
<SizeGB>999</SizeGB>
...
</DriveData>
<DriveData>
...
</DriveData>
</ArrayOfDriveData>
[XmlElement(ElementName = "HardDrives")] 在我的List<DriveData> 上什么都不做。我的DriveData 类上的[XmlElement(ElementName = "HardDrive")] 会导致构建错误。如何将根和 <HardDrive> 元素名称设置为我想要的?
【问题讨论】:
-
Google XML 序列化程序属性,您将属性应用到您的属性并在该属性中指定名称。特别是 Array 和 ArrayItem。
-
您的示例 XML 不清楚。您想要一个名为
<HardDrives>的单亲和多个<HardDrive>的子代吗? -
是的。我的应用程序检索计算机硬盘驱动器上的数据。根“HardDrives”元素将包含一个或多个“HardDrive”元素,具体取决于运行它的系统。
标签: c# xml xmlserializer