关于gb2312编码的xml解析
在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解析相关推荐
- 读取gb2312编码的xml失败问题分析
C#开发程序时,遇上了一个字符编码的大坑,记录一下,解决思路和解决方案供大家参考. 程序功能说明: 简化而言,程序需要从读取一个xml配置文件,在里面增添部分内容后,再次保存成一个新的xml配置文件. ...
- XML解析-Dom4j的DOM解析方式更新XML
Dom4j工具,是非官方的,不在jdk中. 使用步骤: 1)导入dom4j的核心包. dom4j-1.6.1.jar 2)编写Dom4j读取xml文件的代码 1.更新XML 1.1.写出内容到xml文 ...
- Java XML解析器
使用Apache Xerces解析XML文档 一.技术概述 在用Java解析XML时候,一般都使用现成XML解析器来完成,自己编码解析是一件很棘手的问题,对程序员要求很高,一般也没有专业厂商或者开源组 ...
- Java中四种XML解析技术之不完全测试
Java中四种XML解析技术之不完全测试 <script language=javascript src=""></script> 在平时工作中,难免会遇到 ...
- c语言xml解析器libxm2
写这篇文章的原因有如下几点:1)C++标准库中没有操作XML的方法,用C++操作XML文件必须熟悉一种函数库,LIBXML2是其中一种很优秀的XML库,而且它同时支持多种编程语言:2)LIBXML2库 ...
- XML解析简介及Xerces-C++简单使用举例
XML是由World WideWeb联盟(W3C)定义的元语言.它已经成为一种通用的数据交换格式,它的平台无关性,语言无关性,系统无关性,给数据集成与交互带来了极大的方便.XML在不同的语言里解析方式 ...
- Ajax 中XmlHttp 乱码 的解决方法 (UTF8,GB2312 编码 解码)
51ajax.comAJAX论坛 用XMLHTTP Post Form时的表单乱码有两方面的原因--Post表单数据时中文乱码:服务器Response被XMLHTTP不正确编码引起的乱码.换句话说, ...
- XML解析方式(来自 传智播客 方立勋视频教程)
为什么80%的码农都做不了架构师?>>> XML解析方式一般有两种:DOM和SAX DOM:(Document Object Model,即文档对象模型)是W3C组织推荐的解析 ...
- Python 爬虫笔记、多线程、xml解析、基础笔记(不定时更新)
1 Python学习网址:http://www.runoob.com/python/python-multithreading.html 注意高级中的xml解析和多线程 2 参考笔记 虫师 ...
最新文章
- java opencv4.40图片实现人脸识别(2)
- mac安装mysql8.0.11_【MySQL】Mac安装MySQL(V8.0.15)蹚坑记录
- java redis使用卡死_jedispool连redis高并发卡死的问题
- Robo 3T SQL
- 一个浪漫又悲情的爱情故事...
- docker yum 安装
- CSS 的三种样式 内联 内部 外部
- Python常见问题解决记录1-Non-ASCII character ‘\xe7‘错误
- matlab内维尔差值,基于IGS精密星历的卫星位置内插方法比较
- 第4章内容-启动豆果美食并抓包
- 第15.9节 PyQt学习入门:使用Qt Designer进行GUI设计的步骤
- 未来计算机作文600字,未来的电脑作文600字(精选3篇)
- 腾讯全民wifi驱动 v1.1.923 官方版
- Docker修改镜像源为阿里云
- Metasploit(一) 利用 MS17-010 漏洞进行攻击
- vue更换主题设置主题
- 笔记2 IKAnalyzer扩展词库
- linux学习步骤(从入门到精通)
- 软件:推荐六款实用的录频软件
- Win10字体大小调整 资源管理器字体 浏览器标签页导航栏字体变大