这里上代码了
<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>
你是说它可能是这样的:
<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>
恩 是的 下面哪种 会无限扩展
@小眼睛老鼠: 你的 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 中。
@小眼睛老鼠: 如果你想使用 XmlSerializer 的话,你可以让 Model 继承 IXmlSerializable,然后把自定义的解析代码放到 ReadXml 方法中。
@Launcher: 了解 我想起来了 是有这种用法 谢谢
这个需求好复杂,只有一个解决方案:自己动手写序列化与反序列化过程。