关于C#对Xml数据解析
首先进行简单说明Xml 与Html 和 XAML数据标签的差别。
1.Xml属于数据文本, 被设计为传输和存储数据,其焦点是数据的内容。它与json格式数据相似,可作为服务数据传输类型。
其中XML是标准通用标记语言 (SGML) 的子集,非常适合 Web 传输。XML 提供统一的方法来描述和交换独立于应用程序或供应商的结构化数据。
(1).XML的优缺点
<1>.XML的优点
A.格式统一,符合标准;
B.容易与其他系统进行远程交互,数据共享比较方便。
<2>.XML的缺点
A.XML文件庞大,文件格式复杂,传输占带宽;
B.服务器端和客户端都需要花费大量代码来解析XML,导致服务器端和客户端代码变得异常复杂且不易维护;
C.客户端不同浏览器之间解析XML的方式不一致,需要重复编写很多代码;
D.服务器端和客户端解析XML花费较多的资源和时间。
(2).JSON的优缺点
<1>.JSON的优点:
A.数据格式比较简单,易于读写,格式都是压缩的,占用带宽小;
B.易于解析,客户端JavaScript可以简单的通过eval()进行JSON数据的读取;
C.支持多种语言,包括ActionScript, C, C#, ColdFusion, Java, JavaScript, Perl, PHP, Python, Ruby等服务器端语言,便于服务器端的解析;
D.在PHP世界,已经有PHP-JSON和JSON-PHP出现了,偏于PHP序列化后的程序直接调用,PHP服务器端的对象、数组等能直接生成JSON格式,便于客户端的访 问提取;
E.因为JSON格式能直接为服务器端代码使用,大大简化了服务器端和客户端的代码开发量,且完成任务不变,并且易于维护。
<2>.JSON的缺点
A.没有XML格式这么推广的深入人心和喜用广泛,没有XML那么通用性;
B.JSON格式目前在Web Service中推广还属于初级阶段。
2.HTML 被设计用来显示数据,其焦点是数据的外观。主要是网页界面数据展示,以及多媒体处理等。
3.XAML相应的中文名称为可扩展应用程序标记语言,它是微软公司为构建应用程序用户界面而创建的一种新的描述性语言。XAML提供了一种便于扩展和定位的语法来定义和程序逻辑分离的用户界面,而这种实现方式和ASP.NET中的"代码后置"模型非常类似。XAML是一种解析性的语言,尽管它也可以被编译。它的优点是简化编程式上的用户创建过程,应用时要添加代码和配置等。
使用XAML开发人员可以对WPF程序的所有用户界面元素(例如文本、按钮、图像和列表框等)进行详细的定置,同时还可以对整个界面进行合理化的布局,这与使用HTML非常相似。但是由于XAML是基于XML的,所以它本身就是一个组织良好的XML文档,而且相对于HTML,它的语法更严谨、更明确。预计以后大部分的XAML都可由相应的软件自动生成,就如同我们现在制作一个静态页面时,几乎不用编写任何HTML代码就可以直接通过Dreamweaver软件生成一个美观的页面。但是最初通过手动编写XAML代码将是一次绝佳的学习体验,虽然实现的过程繁杂了些,但是将加深您对XAML语法和各个元素的理解。
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
区分完毕之后 ,本次主要是对xml数据解析开发过程中所遇到的问题进行总结。解析Xml数据转数据模型
xml数据结构如下:
<?xml version="1.0"?>
<GuaHaoYJS_OUT>
<ERRNO></ERRNO>
<ERRMSG>交易成功</ERRMSG>
<ITEMS>
<ITEM>
<SHOUFEIXMZL></SHOUFEIXMZL>
<SHOUFEIXMLB></SHOUFEIXMLB>
<CHUFANGHAO>-</CHUFANGHAO>
<CHUFANGRQ>YYYY09DD18249ISS</CHUFANGRQ>
<YIYUANSFXMNM></YIYUANSFXMNM>
<SHOUFEIXMZXBM></SHOUFEIXMZXBM>
<YIYUANSFXMMC>口腔科诊察费</YIYUANSFXMMC>
<DANJIA></DANJIA>
<SHULIANG></SHULIANG>
</ITEM>
<ITEM>
<SHOUFEIXMZL></SHOUFEIXMZL>
<SHOUFEIXMLB></SHOUFEIXMLB>
<CHUFANGHAO>-</CHUFANGHAO>
<CHUFANGRQ>YYYY09DD18249ISS</CHUFANGRQ>
<YIYUANSFXMNM></YIYUANSFXMNM>
<SHOUFEIXMZXBM></SHOUFEIXMZXBM>
<YIYUANSFXMMC>急诊挂号</YIYUANSFXMMC>
<DANJIA></DANJIA>
<SHULIANG></SHULIANG>
</ITEM>
</ITEMS>
<HEJIJE></HEJIJE>
<GUAHAOFEI></GUAHAOFEI>
<ZHENLIAOFEI></ZHENLIAOFEI>
<JIUZHENLSH>GH1003403761</JIUZHENLSH>
<YILIAOLB></YILIAOLB>
<RUYUANNJBBM>Z00.</RUYUANNJBBM>
<RUYUANJBMC>健康查体</RUYUANJBMC>
<YISHENGDM>无</YISHENGDM>
<YISHENGXM>无</YISHENGXM>
<YIBAODJH></YIBAODJH>
<YIBAOZHSYBZ></YIBAOZHSYBZ>
<YIBAOZTJSBZ></YIBAOZTJSBZ>
</GuaHaoYJS_OUT>
数据模型类如下:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml.Serialization; namespace DataModel
{
[XmlRoot(ElementName = "GuaHaoYJS_OUT")]
[Serializable]
public class GuaHaoYJS_OUT
{
[XmlElement(ElementName = "ERRNO")]
public string ERRNO { set; get; }
[XmlElement(ElementName = "ERRMSG")]
public string ERRMSG { set; get; }
[XmlElement(ElementName = "HEJIJE")]
public string HEJIJE { set; get; }
[XmlElement(ElementName = "GUAHAOFEI")]
public string GUAHAOFEI { set; get; }
[XmlElement(ElementName = "ZHENLIAOFEI")]
public string ZHENLIAOFEI { set; get; }
[XmlElement(ElementName = "JIUZHENLSH")]
public string JIUZHENLSH { set; get; }
[XmlElement(ElementName = "YILIAOLB")]
public string YILIAOLB { set; get; }
[XmlElement(ElementName = "RUYUANNJBBM")]
public string RUYUANNJBBM { set; get; }
[XmlElement(ElementName = "RUYUANJBMC")]
public string RUYUANJBMC { set; get; } [XmlElement(ElementName = "YISHENGDM")]
public string YISHENGDM { set; get; }
[XmlElement(ElementName = "YISHENGXM")]
public string YISHENGXM { set; get; }
[XmlElement(ElementName = "YIBAODJH")]
public string YIBAODJH { set; get; }
[XmlElement(ElementName = "YIBAOZHSYBZ")]
public string YIBAOZHSYBZ { set; get; }
[XmlElement(ElementName = "YIBAOZTJSBZ")]
public string YIBAOZTJSBZ { set; get; }
[XmlArray("ITEMS"), XmlArrayItem("ITEM")]
public ITEM[] ITEMS { set; get; } }
[XmlRoot("ITEM")]
public class ITEM
{
[XmlElement(ElementName = "SHOUFEIXMZL")]
public string SHOUFEIXMZL { set; get; }
[XmlElement(ElementName = "SHOUFEIXMLB")]
public string SHOUFEIXMLB { set; get; }
[XmlElement(ElementName = "CHUFANGHAO")]
public string CHUFANGHAO { set; get; }
[XmlElement(ElementName = "CHUFANGRQ")]
public string CHUFANGRQ { set; get; }
[XmlElement(ElementName = "YIYUANSFXMNM")] public string YIYUANSFXMNM { set; get; }
[XmlElement(ElementName = "SHOUFEIXMZXBM")]
public string SHOUFEIXMZXBM { set; get; }
[XmlElement(ElementName = "YIYUANSFXMMC")]
public string YIYUANSFXMMC { set; get; }
[XmlElement(ElementName = "DANJIA")]
public string DANJIA { set; get; }
[XmlElement(ElementName = "SHULIANG")]
public string SHULIANG { set; get; } }
}
前台转换代码:
GuaHaoYJS_OUT dataModel = XmlUtil.Deserialize(typeof(GuaHaoYJS_OUT), str) as GuaHaoYJS_OUT;
好了这里前面的那些代码,是备注给自己看的。真的爬坑过程中比较深的是在下面的估计看到这里都有人想打人的欲望,毕竟看了那漫长的代码了。淡定,我已经优先折叠起来了,就是不给看的意思。哈哈
由于上学不努力,之前真的没留意xml数据界面转换有那么异常错误什么:异常文档(1, 23)中有错误。不应有 < xmlns='' 等
把我查的一哭。
这个错误提示是:异常文档(1, 23)中有错误,仔细看异常信息提示的是:不应有 < 标签名 xmlns=''> 这样的信息是告诉我,model数据类有一个类型是和xml数据节点匹配不上。不是一一对应的关系。
解决完这个之后,再往下发现自己xml数据存在集合数据,再转数组的时候总是转换为空数据,没有解析数据。
原因是:需要使用这个 [XmlArray("ITEMS"), XmlArrayItem("ITEM")] 这样节点类型进行XML数组集合的数据进行model模型类的数据进行数组转换。
关于C#对Xml数据解析的更多相关文章
- iOS - XML 数据解析
前言 @interface NSXMLParser : NSObject public class NSXMLParser : NSObject 1.XML 数据 XML(Extensible Mar ...
- xml数据解析调研
XML数据解析http://www.tuicool.com/articles/Nraau2(必用) http://www.cnblogs.com/pengyingh/articles/2342699. ...
- iOS开发——网络Swift篇&JSON与XML数据解析
JSON与XML数据解析 JSON数据解析(内置NSJSONSerialization与第三方JSONKit) 一,使用自带的NSJSONSerialization 苹果从IOS5.0后推出了SD ...
- xml数据解析
xml数据解析 在iPhone开发中,XML的解析有很多选择,iOS SDK提供了NSXMLParser和libxml2两个类库,另外还有很多第三方类库可选,例如TBXML.TouchXML.Kiss ...
- iOS开发网络篇之Web Service和XML数据解析
郝萌主倾心贡献,尊重作者的劳动成果,请勿转载. 假设文章对您有所帮助,欢迎给作者捐赠,支持郝萌主.捐赠数额任意,重在心意^_^ 我要捐赠: 点击捐赠 Cocos2d-X源代码下载:点我传送 游戏官方下 ...
- 二、Android XML数据解析
XML,可扩展标记语言.可以用来存储数据,可以看做是一个小型的数据库,SharedPreference就是使用XML文件存储数据的,SQLite底层也是一个XML文件,而在网络应用方面,通常作为信息的 ...
- iOS-数据持久化基础-JSON与XML数据解析
解析的基本概念 所谓“解析”:从事先规定好的格式串中提取数据 解析的前提:提前约定好格式.数据提供方按照格式提供数据.数据获取方按照格式获取数据 iOS开发常见的解析:XML解析.JSON解析 一.X ...
- 玩转iOS开发 - JSON 和 Xml 数据解析
前言 Json 和xml是网络开发中经常使用的数据格式,JSON轻量级.xml相对较复杂.所以如今用JSON的比例很大.基本上从server获取的返回数据都是JSON格式的,作为iOS开发人员,解析J ...
- tcp接收xml数据解析
避免tcp接收xml数据时加上xml数据长度,根据xml数据特点来解析recv到的xml数据 int nPos1 = 0; int nPos2 = 0; int nTempPos = 0; int n ...
随机推荐
- Java枚举的用法和原理深入
转载请注明原文地址:https://www.cnblogs.com/ygj0930/p/10843644.html 一:枚举的用法 1.定义和组织常量 在JDK1.5之前,我们定义常量都是:publi ...
- Redis五大数据类型详解
关于Redis的五大数据类型,它们分别为:String.List.Hash.Set.SortSet.本文将会从它的底层数据结构.常用操作命令.一些特点和实际应用这几个方面进行解析.对于数据结构的解析, ...
- [转]【会话技术】Session技术
创建时间:6.29 & 6.30 一.Session技术 Session技术是将数据存储在服务器端的技术,会为每个客户端都创建一块内存空间 存储客户的数据,但客户端需要每次都携带一个标识ID ...
- 3. 卷积神经网络(CNN)
关于数据集的介绍 top-N正确率指的是图像识别算法给出前N个答案中有一个是正确的概率. 在图像识别方面,基于卷积神经网络的图像识别算法给图像识别问题带来了质的飞跃,从2013年之后,基本上所有的研究 ...
- Springboot测试类之@RunWith注解
@runWith注解作用: --@RunWith就是一个运行器 --@RunWith(JUnit4.class)就是指用JUnit4来运行 --@RunWith(SpringJUnit4ClassRu ...
- tf–idf算法解释及其python代码
tf–idf算法python代码实现 这是我写的一个tf-idf的简单实现的代码,我们知道tfidf=tf*idf,所以可以分别计算tf和idf值在相乘,首先我们创建一个简单的语料库,作为例子,只有四 ...
- Linux——清除服务器的日志文件
前言 无论多大的磁盘都遭不住日志文件的糟蹋啊,所以还是需要定时的清除一下. 命令 查找所有.log结尾的文件删除 find / -name "*.log" -exec rm -rv ...
- Linux中的帮助文件
- js 浮点数计算精度不准确问题
或许很多人都遇到过,js 对小数的加.减.乘.除时经常得到一些奇怪的结果! 比如 :0.1 + 0.2 = 0.3 ? 这么一个简单的计算,当你用js 计算时会发现结果是:0.30000000000 ...
- EasyUI前后端分离
陈旧的开发模式 美工(ui工程师:出一个项目模型) java工程师:将原有的html转成jsp,动态展示数据 缺点: 客户需要调节前端的展示效果 解决:由美工去重新排版,重新选色.Vs前后端分离 美工 ...