在ios项目中遇到这样一个问题,需要读取远程的xml文件,进行解析,但是目标xml是gb2312编码的,用System.Text.Encoding.GetEncoding("gb2312")并不奏效。提示“Encoding name 'GB2312' not supported”,查了下才知道GetEncoding只支持下面四个属性:

utf-8
UTF8Encoding
utf-16
UnicodeEncoding (Little-endian)
utf-16BE
UnicodeEncoding (Big-endian)
utf-16LE

后来查了下才知道,ios中不支持gb2312编码,需要另寻他法。最终找到了,文件下载:http://pan.baidu.com/s/1mgDgb48

下载解压出来是2个文件,放入你的程序中,demo代码如下:

private void DownloadXML(string coursenumber) {var webClient = new WebClient();webClient.DownloadStringCompleted += (s, e) = >{var text = e.Result;text = text.Replace("=\"gb2312\"", "=\"UTF-8\"");string localFilename = "cc.xml";string documentsPath = Environment.GetFolderPath(Environment.SpecialFolder.Personal);string localPath = Path.Combine(documentsPath, localFilename);File.WriteAllText(localPath, text);InvokeInBackground(() = >{//XmlDocument doc = new XmlDocument ();//doc.Load (localPath);//XElement xe = XElement.Load (localPath);//var x = xe.Elements ("course").Cast<CourseVido.Course> ();Console.WriteLine("ok");});};string xmlurl = string.Format("http://......./mobile/{0}/MP4/lessonPAD.xml", coursenumber);Gb2312Encoding GB2312 = new Gb2312Encoding();webClient.Encoding = GB2312;webClient.DownloadStringAsync(new Uri(xmlurl));
}

另一处理方式:

//下载文件WebClient client = new WebClient ();//Gb2312Encoding gb2312 = new Gb2312Encoding ();//client.Encoding = gb2312;client.DownloadFile (xmlurl, localPath);Stream str = client.OpenRead (xmlurl);//StreamReader reader = new StreamReader (str);byte[] mbyte = new byte[str.Length + 1];int allmybyte = mbyte.Length;int startmbyte = 0;while (allmybyte > 0) {int m = str.Read (mbyte, startmbyte, allmybyte);if (m == 0)break;startmbyte += m;allmybyte -= m;}//编码处理Gb2312Encoding gb2312 = new Gb2312Encoding ();string chinesestr = gb2312.GetString (mbyte, 0, mbyte.Length);chinesestr = chinesestr.Replace ("=\"gb2312\"", "=\"UTF-8\"");File.WriteAllText (localPath, chinesestr);str.Close ();//读取xml对象XmlSerializer serializer = new XmlSerializer (typeof(CourseVido.course));using (TextReader reader = new StreamReader (localPath)) {result = serializer.Deserialize (reader) as CourseVido.course;}return result;

关于gb2312编码的xml解析相关推荐

  1. 读取gb2312编码的xml失败问题分析

    C#开发程序时,遇上了一个字符编码的大坑,记录一下,解决思路和解决方案供大家参考. 程序功能说明: 简化而言,程序需要从读取一个xml配置文件,在里面增添部分内容后,再次保存成一个新的xml配置文件. ...

  2. XML解析-Dom4j的DOM解析方式更新XML

    Dom4j工具,是非官方的,不在jdk中. 使用步骤: 1)导入dom4j的核心包. dom4j-1.6.1.jar 2)编写Dom4j读取xml文件的代码 1.更新XML 1.1.写出内容到xml文 ...

  3. Java XML解析器

    使用Apache Xerces解析XML文档 一.技术概述 在用Java解析XML时候,一般都使用现成XML解析器来完成,自己编码解析是一件很棘手的问题,对程序员要求很高,一般也没有专业厂商或者开源组 ...

  4. Java中四种XML解析技术之不完全测试

    Java中四种XML解析技术之不完全测试 <script language=javascript src=""></script> 在平时工作中,难免会遇到 ...

  5. c语言xml解析器libxm2

    写这篇文章的原因有如下几点:1)C++标准库中没有操作XML的方法,用C++操作XML文件必须熟悉一种函数库,LIBXML2是其中一种很优秀的XML库,而且它同时支持多种编程语言:2)LIBXML2库 ...

  6. XML解析简介及Xerces-C++简单使用举例

    XML是由World WideWeb联盟(W3C)定义的元语言.它已经成为一种通用的数据交换格式,它的平台无关性,语言无关性,系统无关性,给数据集成与交互带来了极大的方便.XML在不同的语言里解析方式 ...

  7. Ajax 中XmlHttp 乱码 的解决方法 (UTF8,GB2312 编码 解码)

    51ajax.comAJAX论坛 用XMLHTTP Post  Form时的表单乱码有两方面的原因--Post表单数据时中文乱码:服务器Response被XMLHTTP不正确编码引起的乱码.换句话说, ...

  8. XML解析方式(来自 传智播客 方立勋视频教程)

    为什么80%的码农都做不了架构师?>>>    XML解析方式一般有两种:DOM和SAX DOM:(Document Object Model,即文档对象模型)是W3C组织推荐的解析 ...

  9. Python 爬虫笔记、多线程、xml解析、基础笔记(不定时更新)

    1  Python学习网址:http://www.runoob.com/python/python-multithreading.html     注意高级中的xml解析和多线程 2  参考笔记 虫师 ...

最新文章

  1. java opencv4.40图片实现人脸识别(2)
  2. mac安装mysql8.0.11_【MySQL】Mac安装MySQL(V8.0.15)蹚坑记录
  3. java redis使用卡死_jedispool连redis高并发卡死的问题
  4. Robo 3T SQL
  5. 一个浪漫又悲情的爱情故事...
  6. docker yum 安装
  7. CSS 的三种样式 内联 内部 外部
  8. Python常见问题解决记录1-Non-ASCII character ‘\xe7‘错误
  9. matlab内维尔差值,基于IGS精密星历的卫星位置内插方法比较
  10. 第4章内容-启动豆果美食并抓包
  11. 第15.9节 PyQt学习入门:使用Qt Designer进行GUI设计的步骤
  12. 未来计算机作文600字,未来的电脑作文600字(精选3篇)
  13. 腾讯全民wifi驱动 v1.1.923 官方版
  14. Docker修改镜像源为阿里云
  15. Metasploit(一) 利用 MS17-010 漏洞进行攻击
  16. vue更换主题设置主题
  17. 笔记2 IKAnalyzer扩展词库
  18. linux学习步骤(从入门到精通)
  19. 软件:推荐六款实用的录频软件
  20. Win10字体大小调整 资源管理器字体 浏览器标签页导航栏字体变大

热门文章

  1. Matlab中num2str函数的用法
  2. Referer的作用
  3. Bill Gekas儿童摄影作品欣赏
  4. iQOONeo6SE和红米k40区别 哪个好 iQOONeo6SE和红米k40哪个值得买 两者配置对比
  5. Codeforces Round #506 (Div. 3)题解
  6. mysql日期vlog
  7. SDN概述:简介、工具、环境部署
  8. Jquery--一个form中两个submit事件如何进行区分
  9. Bootstrap3动态添加的元素tooltip不生效
  10. 关于 trello 和 slack 的感想及使用经验