加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

似乎无法在c#中使用XmlSerializer反序列化非常简单的xml

发布时间:2020-12-16 01:54:49 所属栏目:百科 来源:网络整理
导读:我觉得我要成功了.我已经写了一百个反序列化程序,但这个正在杀了我! 以下是我从服务中返回的内容.一个非常简单的字符串数组……我想. ArrayOfstring xmlns="http://schemas.microsoft.com/2003/10/Serialization/Arrays" xmlns:i="http://www.w3.org/2001/X
我觉得我要成功了.我已经写了一百个反序列化程序,但这个正在杀了我!

以下是我从服务中返回的内容.一个非常简单的字符串数组……我想.

<ArrayOfstring xmlns="http://schemas.microsoft.com/2003/10/Serialization/Arrays" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
    <string>Action &amp; Adventure</string>
    <string>Comedy</string>
    <string>Drama</string>
    <string>Family</string>
    <string>Horror</string>
    <string>Independent &amp; World</string>
    <string>Romance</string>
    <string>Sci-Fi/Fantasy</string>
    <string>Thriller &amp; Crime</string>
</ArrayOfstring>

我正在使用反序列化框

var serializer = new XmlSerializer(typeof(List<string>));
var reader = new StringReader(xmlString);
var GenreList = (List<string>)serializer.Deserialize(reader);

但我在Deserialize行上收到以下错误:

<ArrayOfstring xmlns='http://schemas.microsoft.com/2003/10/Serialization/Arrays'> was not expected

我试图包括命名空间并创建各种异国情调的对象,以试图让它工作.疯狂的时间.最后我用JSON请求它,并用Json.net反序列化.

但是我很好奇我做错了什么!

解决方法

XML Serializer无法在没有附加规范的情况下反序列化简单类型或简单类型列表,但DataContractReader可以:

string content = @"
        <ArrayOfstring xmlns=""http://schemas.microsoft.com/2003/10/Serialization/Arrays"" xmlns:i=""http://www.w3.org/2001/XMLSchema-instance"">
            <string>Action &amp; Adventure</string>
            <string>Comedy</string>
            <string>Drama</string>
            <string>Family</string>
            <string>Horror</string>
            <string>Independent &amp; World</string>
            <string>Romance</string>
            <string>Sci-Fi/Fantasy</string>
            <string>Thriller &amp; Crime</string>
        </ArrayOfstring>";

        var serializer = new DataContractSerializer(typeof(string[]));
        var reader = new XmlTextReader(new StringReader(content));
        var GenreList = new List<string>((string[])serializer.ReadObject(reader));

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读