XMLwrite отлично работает.
Я пытаюсь XMLread и не очень далеко.
public void WriteXML()
{
using (XmlWriter xmlWriter = XmlWriter.Create("logCurves.xml"))
{
xmlWriter.WriteStartDocument();
xmlWriter.WriteStartElement("log");
foreach (LogCurve logCurve in Curves)
{
xmlWriter.WriteStartElement("logCurveInfo");
xmlWriter.WriteAttributeString("id", logCurve.Name);
xmlWriter.WriteElementString("minValue", logCurve.MinValue.ToString());
xmlWriter.WriteElementString("maxValue", logCurve.MaxValue.ToString());
xmlWriter.WriteElementString("minIndex", logCurve.MinIndex.ToString());
xmlWriter.WriteElementString("maxIndex", logCurve.MaxIndex.ToString());
xmlWriter.WriteElementString("serverCount", logCurve.ServerCount.ToString());
xmlWriter.WriteElementString("typeLogData", "double");
xmlWriter.WriteEndElement();
}
foreach (LogCurve logCurve in Curves)
{
xmlWriter.WriteStartElement("logData");
xmlWriter.WriteAttributeString("id", logCurve.Name);
foreach (LogCurveDataPoint logPoint in logCurve.LogPoints)
{
xmlWriter.WriteStartElement("data");
xmlWriter.WriteElementString("index", $"{logPoint.Index}");
xmlWriter.WriteElementString("value", $"{logPoint.Value}");
xmlWriter.WriteEndElement();
}
xmlWriter.WriteEndElement();
}
xmlWriter.WriteEndDocument();
}
}
public void ReadXML()
{
MessageBox.Show("Not implemented.");
Debug.WriteLine("ReadXML");
using (XmlReader reader = XmlReader.Create("logCurves.xml"))
{
while (reader.Read())
{
if (reader.IsStartElement())
{
Debug.WriteLine($"LocalName {reader.LocalName}");
if (reader.HasAttributes)
Debug.WriteLine($"Attribute: {reader.GetAttribute("id")}");
Debug.WriteLine($"Value {reader.ReadString()}");
}
else
{
//Debug.WriteLine("not IsStartElement");
}
}
}
Debug.WriteLine("");
}
Для начала я не получаю первые xmlWriter.WriteStartElement("logCurveInfo");
или xmlWriter.WriteAttributeString("id", logCurve.Name);
, но после первого я получаю. Что интересно, если я не получу Debug.WriteLine($"Value {reader.ReadString()}");
, тогда я получу первый xmlWriter.WriteStartElement("logCurveInfo");
или xmlWriter.WriteAttributeString("id", logCurve.Name);
,
Пример вывода
<?xml version="1.0" encoding="UTF-8"?>
-<log>
-<logCurveInfo id="Alpha">
<minValue>0</minValue>
<maxValue>750</maxValue>
<minIndex>100</minIndex>
<maxIndex>150</maxIndex>
<serverCount>6</serverCount>
<typeLogData>double</typeLogData>
</logCurveInfo>
-<logCurveInfo id="Beta">
<minValue>0</minValue>
<maxValue>25</maxValue>
<minIndex>100</minIndex>
<maxIndex>150</maxIndex>
<serverCount>6</serverCount>
<typeLogData>double</typeLogData>
</logCurveInfo>