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

如何将C#WCF DataContract序列化/反序列化到/从XML

发布时间:2020-12-16 03:44:58 所属栏目:百科 来源:网络整理
导读:我正在开发将被多个不同客户端应用程序使用的WCF服务.为了使一个功能起作用,服务器需要将 XML文件读入到C#DataContract中,然后传递给相关客户端.据MSDN网站了解,这是可能的,但我找不到任何完整的例子.特别是,该网站谈到一个“流”参数,我还没有得到. 我的数
我正在开发将被多个不同客户端应用程序使用的WCF服务.为了使一个功能起作用,服务器需要将 XML文件读入到C#DataContract中,然后传递给相关客户端.据MSDN网站了解,这是可能的,但我找不到任何完整的例子.特别是,该网站谈到一个“流”参数,我还没有得到.

我的数据合同有一个属性字段,它是具有多个简单属性字段的另一个数据契约的列表.

例如

[DataContract]
    public class MyClass1 {
        [DataMember]
        public string name;
        [DataMember]
        public int age;
    }

    [DataContract]
    public class MyClass2 {
        [DataMember]
        public List<MyClass1> myClass1List;
    }

我的课程看起来像这样.

解决方法

这是一个例子
MyClass1 obj = new MyClass1();
DataContractSerializer dcs = new DataContractSerializer(typeof(MyClass1));

using (Stream stream = new FileStream(@"C:tmpfile.xml",FileMode.Create,FileAccess.Write))
{
    using (XmlDictionaryWriter writer = 
        XmlDictionaryWriter.CreateTextWriter(stream,Encoding.UTF8))
    {
        writer.WriteStartDocument();
        dcs.WriteObject(writer,obj);
    }
}
Books b = new Books();

DataContractSerializer dcs = new DataContractSerializer(typeof(Books));

try
{
    Stream fs = new FileStream(@"C:UserstemelmDesktopXmlFile.xml",FileAccess.Write);

    XmlDictionaryWriter xdw = XmlDictionaryWriter.CreateTextWriter(fs,Encoding.UTF8);
    xdw.WriteStartDocument();
    dcs.WriteObject(xdw,b);
    xdw.Close();
    fs.Flush();
    fs.Close();
}
catch (Exception e)
{
    s += e.Message + "n";
}

(编辑:李大同)

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

    推荐文章
      热点阅读