当我运行以下代码序列化facbook用户时,生成的代码如下:
<?xml version="1.0"?>
<ArrayOfUser
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns="fbapp">
<user>
<user xmlns="http://api.facebook.com/1.0/">
<about_me />
</user>
</user>
</ArrayOfUser>
但是当我试图通过反序列化来读取它时,用户(使用模式生成的)的根将是
<user>
而不是
<user xmlns="http://api.facebook.com/1.0/">
标签破坏一切。
public static List<facebook.Schema.user> ReadFromFile(String filename)
{
Stream str = File.OpenRead(filename);
XmlSerializer formatter = new XmlSerializer(typeof(List<facebook.Schema.user>));
List<facebook.Schema.user> users = (List<facebook.Schema.user>) formatter.Deserialize(str);
str.Close();
return users;
}
public static void WriteToFile(List<facebook.Schema.user> users, String filename)
{
Stream str;
// ...open...
XmlSerializer formatter = new XmlSerializer(typeof(List<facebook.Schema.user>));
formatter.Serialize(str, users);
str.Close();
}
编辑:
我要看的课程在这里:
Source at Codeplex
(查找用户类)
另外,我觉得问题是序列化增加了一个额外的
<用户>
标记每个列表元素。我试图序列化一个用户对象,甚至它也被封装在
<用户>
标签。所以我得到了如下信息:
<?xml version="1.0"?>
<user>
<user xmlns="http://api.facebook.com/1.0/">
...
</user>
</user>
而不是
<?xml version="1.0"?>
<user xmlns="http://api.facebook.com/1.0/">
...
</user>