C# XML Reader 在尝试访问 XML 文件时返回 none
C# XML Reader returning none when trying to access XML file
我正在反序列化以下由序列化生成的 xml。
<BattInfo>
<Battery>
<BattName>TestBattery</BattName>
<NumCellSeries>12</NumCellSeries>
<NumCellParallel>10</NumCellParallel>
<CelltoPackResistanceSum>3</CelltoPackResistanceSum>
<BattThermalResistance>15</BattThermalResistance>
<BattHeatCapacity>12</BattHeatCapacity>
</Battery>
</BattInfo>
我使用的代码是:
public class BattModel
{
public string BattName { get; set; }
public double NumCellSeries { get; set; }
public double NumCellParallel { get; set; }
public double CelltoPackResistanceSum { get; set; }
public double BattThermalResistance { get; set; }
public double BattHeatCapacity { get; set; }
}
public class BattInfo
{
[XmlElement("Battery")]
public List<BattModel> Battery { get; set; }
public BattInfo()
{
this.Battery = new List<BattModel>();
}
public BattInfo(params BattModel[] data) : this()
{
this.Battery.AddRange(data);
}
public void Save(string filename)
{
XmlWriterSettings settings = new XmlWriterSettings();
settings.Indent = true;
XmlWriter writer = XmlWriter.Create(filename, settings);
XmlSerializer serializer = new XmlSerializer(typeof(BattInfo));
XmlSerializerNamespaces ns = new XmlSerializerNamespaces();
ns.Add("", "");
serializer.Serialize(writer, this,ns);
writer.Flush();
writer.Close();
}
public BattInfo Load(string filename)
{
XmlReader reader = XmlReader.Create(filename);
XmlSerializer serializer = new XmlSerializer(typeof(BattInfo));
return (BattInfo)serializer.Deserialize(reader);
}
}
xml 正确序列化。但是当我尝试从使用序列化生成的 xml 读取它时,它 returns none 在通过 xmlreader.
读取文件时
我已将 Load
方法设为静态并尝试了这个...它在这里工作正常。这是代码:
void Main()
{
new BattInfo(new BattModel(){ BattName= "test"}).Save(@"tmp.xml");
Console.Out.Write(BattInfo.Load(@"tmp.xml").Battery[0].BattName);
}
// Define other methods and classes here
public class BattModel
{
public string BattName { get; set; }
public double NumCellSeries { get; set; }
public double NumCellParallel { get; set; }
public double CelltoPackResistanceSum { get; set; }
public double BattThermalResistance { get; set; }
public double BattHeatCapacity { get; set; }
}
public class BattInfo
{
[XmlElement("Battery")]
public List<BattModel> Battery { get; set; }
public BattInfo()
{
this.Battery = new List<BattModel>();
}
public BattInfo(params BattModel[] data) : this()
{
this.Battery.AddRange(data);
}
public void Save(string filename)
{
XmlWriterSettings settings = new XmlWriterSettings();
settings.Indent = true;
XmlWriter writer = XmlWriter.Create(filename, settings);
XmlSerializer serializer = new XmlSerializer(typeof(BattInfo));
XmlSerializerNamespaces ns = new XmlSerializerNamespaces();
ns.Add("", "");
serializer.Serialize(writer, this,ns);
writer.Flush();
writer.Close();
}
public static BattInfo Load(string filename)
{
XmlReader reader = XmlReader.Create(filename);
XmlSerializer serializer = new XmlSerializer(typeof(BattInfo));
return (BattInfo)serializer.Deserialize(reader);
}
}
您是否希望 Load
方法填充您从中调用它的现有实例?简而言之,XmlSerializer
是严格的建设性的,所以你不能设计。
我正在反序列化以下由序列化生成的 xml。
<BattInfo>
<Battery>
<BattName>TestBattery</BattName>
<NumCellSeries>12</NumCellSeries>
<NumCellParallel>10</NumCellParallel>
<CelltoPackResistanceSum>3</CelltoPackResistanceSum>
<BattThermalResistance>15</BattThermalResistance>
<BattHeatCapacity>12</BattHeatCapacity>
</Battery>
</BattInfo>
我使用的代码是:
public class BattModel
{
public string BattName { get; set; }
public double NumCellSeries { get; set; }
public double NumCellParallel { get; set; }
public double CelltoPackResistanceSum { get; set; }
public double BattThermalResistance { get; set; }
public double BattHeatCapacity { get; set; }
}
public class BattInfo
{
[XmlElement("Battery")]
public List<BattModel> Battery { get; set; }
public BattInfo()
{
this.Battery = new List<BattModel>();
}
public BattInfo(params BattModel[] data) : this()
{
this.Battery.AddRange(data);
}
public void Save(string filename)
{
XmlWriterSettings settings = new XmlWriterSettings();
settings.Indent = true;
XmlWriter writer = XmlWriter.Create(filename, settings);
XmlSerializer serializer = new XmlSerializer(typeof(BattInfo));
XmlSerializerNamespaces ns = new XmlSerializerNamespaces();
ns.Add("", "");
serializer.Serialize(writer, this,ns);
writer.Flush();
writer.Close();
}
public BattInfo Load(string filename)
{
XmlReader reader = XmlReader.Create(filename);
XmlSerializer serializer = new XmlSerializer(typeof(BattInfo));
return (BattInfo)serializer.Deserialize(reader);
}
}
xml 正确序列化。但是当我尝试从使用序列化生成的 xml 读取它时,它 returns none 在通过 xmlreader.
读取文件时我已将 Load
方法设为静态并尝试了这个...它在这里工作正常。这是代码:
void Main()
{
new BattInfo(new BattModel(){ BattName= "test"}).Save(@"tmp.xml");
Console.Out.Write(BattInfo.Load(@"tmp.xml").Battery[0].BattName);
}
// Define other methods and classes here
public class BattModel
{
public string BattName { get; set; }
public double NumCellSeries { get; set; }
public double NumCellParallel { get; set; }
public double CelltoPackResistanceSum { get; set; }
public double BattThermalResistance { get; set; }
public double BattHeatCapacity { get; set; }
}
public class BattInfo
{
[XmlElement("Battery")]
public List<BattModel> Battery { get; set; }
public BattInfo()
{
this.Battery = new List<BattModel>();
}
public BattInfo(params BattModel[] data) : this()
{
this.Battery.AddRange(data);
}
public void Save(string filename)
{
XmlWriterSettings settings = new XmlWriterSettings();
settings.Indent = true;
XmlWriter writer = XmlWriter.Create(filename, settings);
XmlSerializer serializer = new XmlSerializer(typeof(BattInfo));
XmlSerializerNamespaces ns = new XmlSerializerNamespaces();
ns.Add("", "");
serializer.Serialize(writer, this,ns);
writer.Flush();
writer.Close();
}
public static BattInfo Load(string filename)
{
XmlReader reader = XmlReader.Create(filename);
XmlSerializer serializer = new XmlSerializer(typeof(BattInfo));
return (BattInfo)serializer.Deserialize(reader);
}
}
您是否希望 Load
方法填充您从中调用它的现有实例?简而言之,XmlSerializer
是严格的建设性的,所以你不能设计。