首页 新闻 会员 周边

如何反序列化 非标准格式的xml

0
悬赏园豆:50 [已解决问题] 解决于 2015-04-13 16:46

rt

<xml>
<return_code><![CDATA[SUCCESS]]></return_code> <return_msg><![CDATA[OK]]></return_msg> 
<appid><![CDATA[1111111]]></appid> 
<mch_id><![CDATA[1232804202]]></mch_id> 
<device_info><![CDATA[013467007045764]]></device_info> <nonce_str><![CDATA[11111111]]></nonce_str> 
<sign><![CDATA[1111111]]></sign> 
<result_code><![CDATA[SUCCESS]]></result_code> 
<prepay_id><![CDATA[0000000]]></prepay_id> 
<trade_type><![CDATA[JSAPI]]></trade_type> 
</xml>  
小眼睛老鼠的主页 小眼睛老鼠 | 老鸟四级 | 园豆:2731
提问于:2015-03-11 20:09
< >
分享
最佳答案
0

中个怎么非标准了?看着挺标准的啊

收获园豆:50
吴瑞祥 | 高人七级 |园豆:29449 | 2015-03-11 20:12

xml很标准 但是不能直接反序列化

小眼睛老鼠 | 园豆:2731 (老鸟四级) | 2015-03-12 15:27

标准的格式为

<?xml version="1.0" encoding="utf-8" ?>

 

 等等

小眼睛老鼠 | 园豆:2731 (老鸟四级) | 2015-03-12 15:37

@小眼睛老鼠: 不会啊,你这个用自带的反序列化工具是可以直接序列化的

吴瑞祥 | 园豆:29449 (高人七级) | 2015-03-12 17:11

@吴瑞祥:  有demo 么 我想看看 我自己调试是没通过的

小眼睛老鼠 | 园豆:2731 (老鸟四级) | 2015-03-13 13:08

@小眼睛老鼠: 他这个问题是出在,最外面的root节点名称必须与类名一致,在序列化的类上加xmlroot特性,值为xml,就可以了

吴瑞祥 | 园豆:29449 (高人七级) | 2015-03-13 23:40

@吴瑞祥: 

public ActionResult Index()
        {
            // 去掉namespace
            var xmlnamespace = new XmlSerializerNamespaces();
            xmlnamespace.Add(string.Empty, string.Empty);
            // 去掉<?xml version="1.0" encoding="utf-8" ?>
            XmlWriterSettings settings = new XmlWriterSettings();
            settings.Indent = false;
            settings.OmitXmlDeclaration = true;
            settings.Encoding = Encoding.Default;
            MemoryStream ms = new MemoryStream();
            XmlWriter writer = XmlWriter.Create(ms, settings);


            XmlSerializer serializer = new XmlSerializer(typeof(SubjectDatas));

            serializer.Serialize(writer, new SubjectDatas(), xmlnamespace);
            return Content(Encoding.UTF8.GetString(ms.ToArray()));
        }

 

小眼睛老鼠 | 园豆:2731 (老鸟四级) | 2015-04-13 16:46
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册