i'm trying use xml data stored in .resx file test data unit tests.
i have code takes test data, converts stream, , tries deserialize collection of students can use mock dbset.
var stream = testdata.students.tostream(); var reader = new streamreader(stream); var serializer = new xmlserializer(typeof(collection<student>)); _students = (collection<student>)serializer.deserialize(reader);
student class
public class student { public int id { get; set; } public string lastname { get; set; } public string firstname { get; set; } public char middleinitial { get; set; } public datetime? enrollmentdate { get; set; } [xmlignore] public virtual icollection<enrollment> enrollments { get; set; } }
it fails on last line exception:
{"<students xmlns=''> not expected."}
i've tried adding serializable attribute student class, tried adding xmlroot attribute it, searched around on google while, couldn't find dealing resource files.
on side note, there easier/better method getting test data?
edit if helps i'm following this article.
edit 2 drilling down stack trace of inner exception, found line:
at microsoft.xml.serialization.generatedassembly.xmlserializationreadercollection1.read4_arrayofstudent()
so changed root element of xml students arrayofstudent , voila, correctly deserializes.
here's xml data in resource file.
<students> <student> <id>1</id> <lastname>alexander</lastname> <firstname>carson</firstname> <enrollmentdate>2010-09-01t00:00:00</enrollmentdate> </student> <student> <id>2</id> <lastname>alonso</lastname> <firstname>meredith</firstname> <enrollmentdate>2012-09-01t00:00:00</enrollmentdate> </student> <student> <id>3</id> <lastname>anand</lastname> <firstname>arturo</firstname> <enrollmentdate>2013-09-01t00:00:00</enrollmentdate> </student> <student> <id>4</id> <lastname>barzdukas</lastname> <firstname>gytis</firstname> <enrollmentdate>2012-09-01t00:00:00</enrollmentdate> </student> <student> <id>5</id> <lastname>li</lastname> <firstname>yan</firstname> <enrollmentdate>2012-09-01t00:00:00</enrollmentdate> </student> <student> <id>6</id> <lastname>justice</lastname> <firstname>peggy</firstname> <enrollmentdate>2011-09-01t00:00:00</enrollmentdate> </student> <student> <id>7</id> <lastname>norman</lastname> <firstname>laura</firstname> <enrollmentdate>2013-09-01t00:00:00</enrollmentdate> </student> <student> <id>8</id> <lastname>olivetto</lastname> <firstname>nino</firstname> <enrollmentdate>2005-08-11t00:00:00</enrollmentdate> </student> <student> <id>9</id> <lastname>alexander</lastname> <firstname>carson</firstname> <enrollmentdate>2010-09-01t00:00:00</enrollmentdate> </student> <student> <id>10</id> <lastname>alonso</lastname> <firstname>meredith</firstname> <enrollmentdate>2012-09-01t00:00:00</enrollmentdate> </student> <student> <id>11</id> <lastname>anand</lastname> <firstname>arturo</firstname> <enrollmentdate>2013-09-01t00:00:00</enrollmentdate> </student> <student> <id>12</id> <lastname>barzdukas</lastname> <firstname>gytis</firstname> <enrollmentdate>2012-09-01t00:00:00</enrollmentdate> </student> <student> <id>13</id> <lastname>li</lastname> <firstname>yan</firstname> <enrollmentdate>2012-09-01t00:00:00</enrollmentdate> </student> <student> <id>14</id> <lastname>justice</lastname> <firstname>peggy</firstname> <enrollmentdate>2011-09-01t00:00:00</enrollmentdate> </student> <student> <id>15</id> <lastname>norman</lastname> <firstname>laura</firstname> <enrollmentdate>2013-09-01t00:00:00</enrollmentdate> </student> <student> <id>16</id> <lastname>olivetto</lastname> <firstname>nino</firstname> <enrollmentdate>2005-08-11t00:00:00</enrollmentdate> </student> </students>
you can data xml file using code
using (filestream sr = new filestream(filepath, filemode.open, fileaccess.read)) { xmlserializer serializer = new xmlserializer(typeof(students)); return serializer.deserialize(sr) students; }
for xmlns can't use attribute, add namespaces should add
xmlserializernamespaces np = new xmlserializernamespaces();
and add new namespaces np , add np serialize or deserialize parameter
Comments
Post a Comment