using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using System.Windows.Forms.DataVisualization.Charting; using System.Xml; using System.Xml.Serialization; namespace xmlserializetest { public partial class Form1 : Form { List docs = new List(); List groupData = new List(); List pinData = new List(); List groups = new List(); List pins = new List(); List tests = new List(); public Form1() { InitializeComponent(); Main(); } public void Main() { //const string FILENAME = @"d:\result.xml"; //XmlReaderSettings settings = new XmlReaderSettings(); //settings.IgnoreWhitespace = true; //XmlReader reader = XmlReader.Create(FILENAME); //XmlSerializer serializer = new XmlSerializer(typeof(Result)); //Result doc = (Result)serializer.Deserialize(reader); foreach (var file in Directory.EnumerateFiles(@"D:\curves\", "*.xml")) { XmlReaderSettings settings = new XmlReaderSettings(); settings.IgnoreWhitespace = true; XmlReader reader = XmlReader.Create(file); XmlSerializer serializer = new XmlSerializer(typeof(Result)); Result doc = (Result)serializer.Deserialize(reader); docs.Add(doc); PrintGroups(doc); PrintTests(doc); PopulateTests(doc); groups.AddRange(GetGroups(doc)); } groups = groups.Distinct().ToList(); lbGroups.DataSource = groups; } void PopulateTests(Result doc) { foreach (var test in doc.ResultHeader.Tests.Test) { if(test.TestType == "Thermo.CTS.Scimitar.Components.ParametricContainer") tests.Add(test.Name); } lbTests.DataSource = tests.Distinct().ToList(); } public void PlotData(List data) { chart1.Series.Clear(); int i=0; foreach (var curve in data) { i++; string name = i.ToString(); var s = new Series(name); s.ChartType = SeriesChartType.Line; chart1.Series.Add(s); foreach (var vi in curve.Curve.Vi) { chart1.Series[name].Points.AddXY(vi.v, vi.i); } } chart1.DataBind(); } void PrintGroups (Result doc) { foreach (var group in doc.ResultHeader.Groups.Group) { Console.WriteLine(group.Name); foreach (var pin in group.Pin) { Console.WriteLine("PinName : {0}, desc: {1}",pin.Name,pin.Desc); } } } List GetGroups (Result doc) { List groups = new List(); foreach (var group in doc.ResultHeader.Groups.Group) { Console.WriteLine(group.Name); foreach (var pin in group.Pin) { groups.Add(pin.Desc); } } return groups; } List GetPinsFromGroups(Result doc) { List pins = new List(); foreach (var group in doc.ResultHeader.Groups.Group) { var groups = lbGroups.SelectedItems; Console.WriteLine(group.Name); if (groups.Contains(group.Name)) { foreach (var pin in group.Pin) { pins.Add(pin.Name); } } } return pins.Distinct().ToList(); } void PrintTests ( Result doc) { foreach ( var test in doc.ResultHeader.Tests.Test) { Console.WriteLine(test.Name); } } private void lbGroups_SelectedIndexChanged(object sender, EventArgs e) { groupData.Clear(); foreach (var doc in docs) { groups.Clear(); foreach (var group in lbGroups.SelectedItems) { groups.Add(group.ToString()); } List tests = new List(); foreach (var test in lbTests.SelectedItems) { tests.Add(test.ToString()); } groupData.AddRange(doc.DataSection.GetResultsByTestNameAndGroups(tests, groups)); lbPins.DataSource = GetPinsFromGroups(doc); } PlotData(groupData); } private void PlotPins () { pinData.Clear(); foreach (var doc in docs) { pins.Clear(); foreach (var pin in lbPins.SelectedItems) { pins.Add(pin.ToString()); } List tests = new List(); foreach (var test in lbTests.SelectedItems) { tests.Add(test.ToString()); } pinData.AddRange(doc.DataSection.GetResultsByTestNameAndPins(tests, pins)); } PlotData(pinData); } private void lbPins_SelectedIndexChanged(object sender, EventArgs e) { PlotPins(); } } }