Когда я запускаю следующий код для сериализации пользователей 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();
}
EDIT:
Класс, который я пытаюсь просмотреть, находится здесь: Источник в Codeplex (ищите класс пользователя)
Кроме того, проблема, которую я чувствую, заключается в том, что сериализация добавляет дополнительный тег <user>
для каждого элемента списка. Я пытался сериализовать один пользовательский объект, и даже он был заключен в тег <user>
. Так я получаю что-то вроде:
<?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>