zoukankan      html  css  js  c++  java
  • XmlRpc.net 出参字符串还原为结构体

    上一篇随笔写的是入参结构体转字符串,现在需要把保存到服务器的字符串还原为结构体,这里记录一下操作步骤:

    1. 格式化字符串。

    XmlRpcDeserializer 支持反序列化<struct>…</struct>节点开始的数据,所以需要先把字符串首尾其他字符去掉。

       1:  // args 为结构体的字符串
       2:  TaskArgsStruct argStruct = null;
       3:  const string startValue = "<struct>";
       4:  const string endValue = "</struct>";
       5:  int startIndex = args.IndexOf(startValue);
       6:  if (startIndex > 0)
       7:  {
       8:      args = args.Remove(0, startIndex);
       9:  }
      10:  else
      11:  {
      12:      return argStruct;
      13:  }
      14:  int endIndex = args.LastIndexOf(endValue);
      15:  if (endIndex > 0)
      16:  {
      17:      args = args.Remove(endIndex + endValue.Length);
      18:  }
      19:  else
      20:  {
      21:      return argStruct;
      22:  }
     
    2. 反序列化字符串。
       1:  XmlRpcDeserializer deSerial = new XmlRpcDeserializer();
       2:  using (MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(args)))
       3:  {
       4:      XmlReader rdr = XmlReader.Create(ms);
       5:      argStruct = (TaskArgsStruct)deSerial.ParseValueElement(rdr, typeof(TaskArgsStruct), new MappingStack("struct"), MappingAction.Error);
       6:      ms.Close();
       7:  }
       8:   
       9:  return argStruct;

    TaskArgsStruct 是接收出参的结构体。到此就得到了TaskArgsStruct 的实例 argStruct 。

  • 相关阅读:
    RedHat/CentOS根目录扩容
    VNC安装配置
    网络命名空间
    Linux 端口信息查看
    Linux实际常用命令
    yum的配置文件介绍
    Linux下查/删/替 命令(转)
    CentOS/redhat使用光盘镜像源
    数据库的附加和分离
    Corrupted Metadata/failed to mount /sysroot
  • 原文地址:https://www.cnblogs.com/dipwater/p/3151960.html
Copyright © 2011-2022 走看看