deserialize XML document to C# collection of objects -
i need point out wrong here. have searched , tried different ways load xml , not see have caused error:
system.invalidoperationexception: there error in xml document (1, 1). ---> system.xml.xmlexception: data @ root level invalid. line 1, position 1.
<?xml version="1.0" encoding="utf-8"?> <folderlist xmlns:xsi="http://www.w3.org/2001/xmlschema-instance" xmlns:xsd="http://www.w3.org/2001/xmlschema"> <foldersetting> <id>1</id> <source> <path>\\usapps2\avl\attachments</path> <datelastread>2016-01-25t10:51:12.6030162-08:00</datelastread> <filter> <owner>us\</owner> <filetype>*</filetype> </filter> </source> <destination> <path>e:\userdata\avl</path> <overwrite>false</overwrite> </destination> </foldersetting> <foldersetting> <id>2</id> <source> <path>\\twavlsvr\avl\attachments</path> <datelastread>2016-01-22t10:51:12.6030162-08:00</datelastread> <filter> <owner>tw\</owner> <filetype>pdf</filetype> </filter> </source> <destination> <path>e:\userdata\avl</path> <overwrite>false</overwrite> </destination> </foldersetting> <foldersetting> <id>3</id> <source> <path>e:\userdata\avl</path> <datelastread>2016-01-22t10:51:12.6030162-08:00</datelastread> <filter> <owner>us\</owner> <filetype>*</filetype> </filter> </source> <destination> <path>e:\userdata\avl\web</path> <overwrite>false</overwrite> </destination> </foldersetting> </folderlist> here class definition:
[serializable()] public class filter { [xmlelement("owner")] public string owner {get; set;} [xmlelement("filetype")] public string filetype { get; set; } } [serializable()] public class sourcefolder { [xmlelement("path")] public string path { get; set; } [xmlelement("datelastread")] public datetime datelastread { get; set; } [xmlelement("filter")] public filter filtertypes { get; set; } } [serializable()] public class destinationfolder { [xmlelement("path")] public string path { get; set; } [xmlelement("overwrite")] public bool overwrite { get; set; } } [serializable()] public class foldersetting { [xmlelement("id")] public int id { get; set; } [xmlelement("source")] public sourcefolder source { get; set; } [xmlelement("destination")] public destinationfolder destination { get; set; } } [serializable()] [xmlroot("folderlist")] public class folderlist { public folderlist() { foldersettings = new list<foldersetting>(); } [xmlelement("foldersetting")] public list<foldersetting> foldersettings; } here deserialize xml:
xmlserializer serializer = new xmlserializer(typeof(folderlist)); using (stringreader reader = new stringreader("c:\\folders.xml")) { folderlist folders = (folderlist)(serializer.deserialize(reader)); } i have followed 1 suggestion on here populate classes have , serialize make sure proper format classes , still doesn't help. hopefully, see i'm missing here.
the problem use of stringreader in deserialization, should use streamreader:
using (streamreader reader = new streamreader("d:\\folders.xml")) { folderlist folders = (folderlist)(serializer.deserialize(reader)); } so, result the serializer attempting deserialize "d:\folders.xml", rather data file op attempting deserialize.
Comments
Post a Comment