找回密码
 注册成为天翎用户
查看: 694|回复: 3

[已解决] 关于Web Service反序列化【Feature #11547】

[复制链接]
江苏邮电 发表于 2014-5-22 08:23:54 | 显示全部楼层 |阅读模式
本帖最后由 Jarod 于 2014-6-19 18:46 编辑

根据Web Servie读取的XML数据为如下形式:
  1. <list>
  2.   <cn.myapps.webservice.model.SimpleDocument>
  3.     <items>
  4.       <entry>
  5.         <string></string>
  6.         <string>11e2-80a3-23c4a2ba-b96a-59e13d804b12</string>
  7.       </entry>
  8.       <entry>
  9.         <string>项目编号</string>
  10.         <string>14SFDXTX027</string>
  11.       </entry>
  12.       <entry>
  13.         <string>项目名称</string>
  14.         <string>顾堰民测试项目</string>
  15.       </entry>
  16.     </items>
  17.   </cn.myapps.webservice.model.SimpleDocument>
  18.   <cn.myapps.webservice.model.SimpleDocument>
  19.     <items>
  20.       <entry>
  21.         <string></string>
  22.         <string>11e2-80a3-23c4a2ba-b96a-59e13d804b12</string>
  23.       </entry>
  24.       <entry>
  25.         <string>项目编号</string>
  26.         <string>14SFDXTX029</string>
  27.       </entry>
  28.       <entry>
  29.         <string>项目名称</string>
  30.         <string>项目信息14030417</string>
  31.       </entry>
  32.     </items>
  33.   </cn.myapps.webservice.model.SimpleDocument>
  34. </list>
复制代码
现需要


1.将XML文档反序列化为SimpleDocument对象集,从对象中获取相关属性到DataTable。

代码如下:
  1. #region Deserializer
  2.         /// <summary>
  3.         /// Deserialize
  4.         /// </summary>
  5.         /// <param name="type">type</param>
  6.         /// <param name="xml">xml string</param>
  7.         /// <returns></returns>
  8.         public static object Deserialize(Type type, string xml)
  9.         {
  10.             xml=xml.Replace("\n", "");
  11.             try
  12.             {
  13.                 using (StringReader sr = new StringReader(xml))
  14.                 {
  15.                     XmlSerializer xmldes = new XmlSerializer(type);
  16.                     return xmldes.Deserialize(sr);
  17.                 }
  18.             }
  19.             catch (Exception ex)
  20.             {
  21.                 logger.Error(ex);
  22.                 return null;
  23.             }
  24.         }
  25.         #endregion
复制代码
2.直接读取元素(貌似行不通,由xml文件看出元素的唯一性无法得到保证)插入DataTable.



请提供下反序列化的方法或者最顶层的<list>标签(或者list与SimpleDocuemnt)的相关信息。

调用反序列化方法代码如下:
  1. List<SimpleDocument> listSimpleDocument = new List<SimpleDocument>();            
  2.             SimpleDocument sd =XMLSerializerHelper.Deserialize(typeof(List<SimpleDocument>), xml1) as SimpleDocument;
  3.             
复制代码
shary 发表于 2014-6-5 14:59:09 | 显示全部楼层
跟客户沟通对应已经解析了xml文件获取了字段。目前存在一个问题不能获取系统字段的值。目前已经跟客户沟通在表单中添加一个隐藏字段获取存储系统字段的值。对应再获取该隐藏字段的值,变相解决xml文件不能解析系统字段的问题。目前客户在尝试。
回复

使用道具 举报

shary 发表于 2014-6-10 09:53:22 | 显示全部楼层
您好,目前平台没有实现反序列化的功能。该问题内部讨论创建一个feature去跟进并在M3版本中处理该问题。如果该功能实现了我会告知您。
回复

使用道具 举报

shary 发表于 2014-6-19 13:44:00 | 显示全部楼层
目前跟您沟通对应问题已通过其他方式解决。对应帖子关闭。对应需求会在M3中实现。到时候升级到M3就可以直接使用该接口。
回复

使用道具 举报

本版积分规则

手机版|天翎MyApps技术社区 ( 粤ICP备11093750号 )

GMT+8, 2026-8-13 18:43

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表