首页 新闻 会员 周边

如何反序列化属性带数字序号无限扩展的xml

1
悬赏园豆:30 [待解决问题]

这里上代码了 

 

<xml>
   <appid><![CDATA[wx2421b1c4370ec43b]]></appid>
   <mch_id><![CDATA[10000100]]></mch_id>
   <nonce_str><![CDATA[TeqClE3i0mvn3DrK]]></nonce_str>
   <out_refund_no_0><![CDATA[1415701182]]></out_refund_no_0>
   <out_trade_no><![CDATA[1415757673]]></out_trade_no>
   <refund_count>1</refund_count>
   <refund_fee_0>1</refund_fee_0>
   <refund_id_0><![CDATA[2008450740201411110000174436]]></refund_id_0>
   <refund_status_0><![CDATA[PROCESSING]]></refund_status_0>
   <result_code><![CDATA[SUCCESS]]></result_code>
   <return_code><![CDATA[SUCCESS]]></return_code>
   <return_msg><![CDATA[OK]]></return_msg>
   <sign><![CDATA[1F2841558E233C33ABA71A961D27561C]]></sign>
   <transaction_id><![CDATA[1008450740201411110005820873]]></transaction_id>
</xml>

可以看到 这3行 有一条的时候是0 有2条的时候是1 有3条的时候是2 

而用固定的model一个字段对应一行 那么字段终归有限的 无法适应无限的这种扩展

所以想问下 有没有人处理过这个需求

 

<refund_fee_0>1</refund_fee_0>
   <refund_id_0><![CDATA[2008450740201411110000174436]]></refund_id_0>
   <refund_status_0><![CDATA[PROCESSING]]></refund_status_0>
<refund_fee_1>1</refund_fee_1>
   <refund_id_1><![CDATA[2008450740201411110000174436]]></refund_id_1>
   <refund_status_1><![CDATA[PROCESSING]]></refund_status_1>

 

小眼睛老鼠的主页 小眼睛老鼠 | 老鸟四级 | 园豆:2731
提问于:2015-04-14 11:17
< >
分享
所有回答(2)
0

你是说它可能是这样的:

<refund_fee_0>1</refund_fee_0>
<refund_id_0><![CDATA[2008450740201411110000174436]]></refund_id_0>
<refund_status_0><![CDATA[PROCESSING]]></refund_status_0>

// 或者

<refund_fee_0>1</refund_fee_0>
<refund_id_0><![CDATA[2008450740201411110000174436]]></refund_id_0>
<refund_status_0><![CDATA[PROCESSING]]></refund_status_0>
<refund_fee_1>2</refund_fee_1>
<refund_id_1><![CDATA[2008450740201411110000174436]]></refund_id_1>
<refund_status_1><![CDATA[PROCESSING]]></refund_status_1>
Launcher | 园豆:45045 (高人七级) | 2015-04-14 11:39

恩 是的 下面哪种 会无限扩展

支持(0) 反对(0) 小眼睛老鼠 | 园豆:2731 (老鸟四级) | 2015-04-14 11:53

@小眼睛老鼠: 你的 Model 可以这样写:

class refund

{

  refund_fee {get;set;}

  refund_id{get;set;}

  refund_status{get;set;}
}

class Model

{

   public List<refund> refund{get;set;}
}

然后自己用 XmlReader 读取解析到你的 Model 中。

支持(0) 反对(0) Launcher | 园豆:45045 (高人七级) | 2015-04-14 11:56

@小眼睛老鼠: 如果你想使用 XmlSerializer 的话,你可以让 Model 继承 IXmlSerializable,然后把自定义的解析代码放到 ReadXml 方法中。

支持(0) 反对(0) Launcher | 园豆:45045 (高人七级) | 2015-04-14 11:59

@Launcher:  了解 我想起来了 是有这种用法 谢谢

支持(0) 反对(0) 小眼睛老鼠 | 园豆:2731 (老鸟四级) | 2015-04-14 12:04
0

这个需求好复杂,只有一个解决方案:自己动手写序列化与反序列化过程。

519740105 | 园豆:5810 (大侠五级) | 2015-04-14 12:46
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册