关于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 ...
随机推荐
- 201671010450-姚玉婷-实验十四 团队项目评审&课程学习总结
项目 内容 所属科目 软件工程http://www.cnblogs.com/nwnu-daizh 作业要求 https://www.cnblogs.com/nwnu-daizh/p/11093584. ...
- 红黑树与AVL树比较
链接地址:https://blog.csdn.net/zhangkunrun/article/details/38336543 B树相对于红黑树的区别 在大规模数据存储的时候,红黑树往往出现由于树的深 ...
- FormData用法
https://www.jianshu.com/p/230e7000cefd FormData的主要用途有两个: 1.将form表单元素的name与value进行组合,实现表单数据的序列化,从而减少表 ...
- 【oracle】处理锁表
查询锁表 select object_name,machine,s.sid,s.serial# from v$locked_object l,dba_objects o ,v$session swhe ...
- 把antd的组件源码搬到Ant Design Pro中使用
把组件源码搬过来后,样式死活不生效,经过1天的努力,有说less-loader的,有说webpack配置,还有说babel配置的,最后,我自己找到了方法 就是在global.less中使用@impor ...
- Kinect for Windows V2开发教程
教程 https://blog.csdn.net/openbug/article/details/80921437 Windows版Kinect SDK https://docs.microsoft. ...
- 各类app的小结
各类app小结: 一.原生app: 二.webapp: 无法调用底层设备的api 三.混合app的方法: 1.原生app 嵌入 2.flutter 3.react native 4.AppCan( ...
- ESP8266 LUA脚本语言开发: 准备工作-官网获取LUA固件
前言 这节咱去官网上获取lua开发的固件. 官网下载 下面是我以前写的,咱不使用官网下载的固件,咱使用自己编译的固件.. 填写好自己的的邮箱地址,然后选择好自己需要的功能,一会编译好的固件就会发到您的 ...
- Django+uWSGI+Nginx 部署网站
Django 1.11设置 保证Django在本地调试没有问题: 当然这是前提^_^ 收集静态文件至指定文件夹 Django静态文件设置具体参考:https://docs.djangoproject. ...
- spark基础知识四
围绕spark的其他特性和应用.主要包括以下几个方面 spark自定义分区 spark中的共享变量 spark程序的序列化问题 spark中的application/job/stage/task之间的 ...