XMLSerializer反序列化List <t>问题</t>

时间:2009-08-06 23:41:44

标签: .net xml-serialization

当我运行以下代码来序列化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(查找用户类)

另外,我觉得问题是序列化为每个列表元素添加了额外的<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>

0 个答案:

没有答案