c# - Deserialize to list -
i using xmlserializer.serialize
, xmlserializer.deserialize
have class metricresult:
public class metricresult { public string metric; public string newvalue; public string deltavalue; }
and calculating results stored in :
list<metricresult> metricresults = new list<metricresult>();
i changed list xml file succefully , in other project need deserialize list there exception thrown :
there-is-an-error-in-xml-document-0-0-during-deserialization
the xml file
<?xml version="1.0" encoding="utf-8"?> <arrayofmetricresult xmlns:xsi="http://www.w3.org/2001/xmlschema-instance" xmlns:xsd="http://www.w3.org/2001/xmlschema"> <metricresult> <metric>numberofdeclaration</metric> <newvalue>0</newvalue> <deltavalue>0</deltavalue> </metricresult> <metricresult> <metric>numberofdeclaration</metric> <newvalue>0</newvalue> <deltavalue>0</deltavalue> </metricresult> <metricresult> <metric>numberofdeclaration</metric> <newvalue>0</newvalue> <deltavalue>0</deltavalue> </metricresult> <metricresult> <metric>numberofdeclaration</metric> <newvalue>0</newvalue> <deltavalue>0</deltavalue> </metricresult> <metricresult> <metric>numberofdeclaration</metric> <newvalue>0</newvalue> <deltavalue>0</deltavalue> </metricresult> <metricresult> <metric>numberofdeclaration</metric> <newvalue>0</newvalue> <deltavalue>0</deltavalue> </metricresult> </arrayofmetricresult>
weird, coz following works fine me:
using system; using system.collections.generic; using system.linq; using system.xml; using system.xml.serialization; public class metricresult { public string metric { get; set; } public string newvalue { get; set; } public string deltavalue { get; set; } } class program { static void main() { // define metric results serialize var metricresults = new[] { new metricresult { metric = "metric 1", newvalue = "new value 1", deltavalue = "delta 1" }, new metricresult { metric = "metric 2", newvalue = "new value 2", deltavalue = "delta 2" }, new metricresult { metric = "metric 3", newvalue = "new value 3", deltavalue = "delta 3" }, }.tolist(); var serializer = new xmlserializer(metricresults.gettype()); using (var writer = xmlwriter.create("metrics.xml")) { // serialize metric results defined metrics.xml serializer.serialize(writer, metricresults); } using (var reader = xmlreader.create("metrics.xml")) { // read metrics.xml , deserialize metricresults = (list<metricresult>)serializer.deserialize(reader); foreach (var result in metricresults) { console.writeline("metric: {0}, new value: {1}, delta: {2}", result.metric, result.newvalue, result.deltavalue); } } } }
and metrics.xml
looks expected:
<?xml version="1.0" encoding="utf-8"?> <arrayofmetricresult xmlns:xsd="http://www.w3.org/2001/xmlschema" xmlns:xsi="http://www.w3.org/2001/xmlschema-instance"> <metricresult> <metric>metric 1</metric> <newvalue>new value 1</newvalue> <deltavalue>delta 1</deltavalue> </metricresult> <metricresult> <metric>metric 2</metric> <newvalue>new value 2</newvalue> <deltavalue>delta 2</deltavalue> </metricresult> <metricresult> <metric>metric 3</metric> <newvalue>new value 3</newvalue> <deltavalue>delta 3</deltavalue> </metricresult> </arrayofmetricresult>
Comments
Post a Comment