xml序列化后的字符串内容LoadXml报错处理

前段时间,用Mvc4 web api写入restful架构的http api接口,提供了XML和json两种返回结果。

但是同事在通过WebRequest获取的XML返回结果,用XmlDocument.LoadXml时报错“根节点数据无效”,通过网上baidu,原来是对象经过XML序列化后,会加入一些特定字符,网上给出的处理办法如下:

LoadXml:Data at the root level is invalid. Line 1, position 1.

在使用XmlDocument的LoadXml方法加载xml时,如是提示。意思是第一行第一个字符错误,因为xml要求文件开始必须是<?xml这样,所以应该是这地方出了问题。Debug一下,发现了下面的两个问题。

1. 因为是通过web获取xml,所以编码问题导致了xml中出现乱码,我的解决办法是在获取时加入编码格式的设置,根据地址不同使用不同的encoding,具体实现跟使用的download方法有关。

2.在xml文件的开头有隐藏的非法字符,之所以说隐藏,是因为我在debug时快速监视看到的数据完全是正常的(即开始就是类似<xml...),但是取得第一个字符却不是<,而是个双引号。于是在获取到xml后又加了个replace的代码:

rssxml = System.Text.RegularExpressions.Regex.Replace(rssxml, "^[^<]", "");

意思是删除从字符串开始到<之间的所有字符。

这样问题就得以解决。

转载于:https://www.cnblogs.com/anny-1980/articles/2845681.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值