首先进行简单说明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数据解析的更多相关文章

  1. iOS - XML 数据解析

    前言 @interface NSXMLParser : NSObject public class NSXMLParser : NSObject 1.XML 数据 XML(Extensible Mar ...

  2. xml数据解析调研

    XML数据解析http://www.tuicool.com/articles/Nraau2(必用) http://www.cnblogs.com/pengyingh/articles/2342699. ...

  3. iOS开发——网络Swift篇&JSON与XML数据解析

    JSON与XML数据解析 JSON数据解析(内置NSJSONSerialization与第三方JSONKit)   一,使用自带的NSJSONSerialization 苹果从IOS5.0后推出了SD ...

  4. xml数据解析

    xml数据解析 在iPhone开发中,XML的解析有很多选择,iOS SDK提供了NSXMLParser和libxml2两个类库,另外还有很多第三方类库可选,例如TBXML.TouchXML.Kiss ...

  5. iOS开发网络篇之Web Service和XML数据解析

    郝萌主倾心贡献,尊重作者的劳动成果,请勿转载. 假设文章对您有所帮助,欢迎给作者捐赠,支持郝萌主.捐赠数额任意,重在心意^_^ 我要捐赠: 点击捐赠 Cocos2d-X源代码下载:点我传送 游戏官方下 ...

  6. 二、Android XML数据解析

    XML,可扩展标记语言.可以用来存储数据,可以看做是一个小型的数据库,SharedPreference就是使用XML文件存储数据的,SQLite底层也是一个XML文件,而在网络应用方面,通常作为信息的 ...

  7. iOS-数据持久化基础-JSON与XML数据解析

    解析的基本概念 所谓“解析”:从事先规定好的格式串中提取数据 解析的前提:提前约定好格式.数据提供方按照格式提供数据.数据获取方按照格式获取数据 iOS开发常见的解析:XML解析.JSON解析 一.X ...

  8. 玩转iOS开发 - JSON 和 Xml 数据解析

    前言 Json 和xml是网络开发中经常使用的数据格式,JSON轻量级.xml相对较复杂.所以如今用JSON的比例很大.基本上从server获取的返回数据都是JSON格式的,作为iOS开发人员,解析J ...

  9. tcp接收xml数据解析

    避免tcp接收xml数据时加上xml数据长度,根据xml数据特点来解析recv到的xml数据 int nPos1 = 0; int nPos2 = 0; int nTempPos = 0; int n ...

随机推荐

  1. Flutter gradle采坑

    前些日子google推出Flutter1.9版本支持web果断升级 在运行flutter时发现错误,错误提示为 Launching lib/main.dart on Android SDK built ...

  2. Python实现感知器的逻辑电路(与门、与非门、或门、异或门)

    在神经网络入门回顾(感知器.多层感知器)中整理了关于感知器和多层感知器的理论,这里实现关于与门.与非门.或门.异或门的代码,以便对感知器有更好的感觉. 此外,我们使用 pytest 框架进行测试. p ...

  3. django 权限设置-菜单显示

    问题:在用户登录后,如何只显示出用户权限的菜单呢?需要设置显示菜单权限 1.为了显示菜单,需要在models权限上添加is_menu(手动判断是否是查看)的icon(图标字符串) 在rbac中录入另一 ...

  4. djabgo 中间件

    1.中间件是发生在request和response 之间,都会经过中间键, 上述截图中的中间件都是django中的,我们也可以自己定义一个中间件,我们可以自己写一个类,但是必须继承Middleware ...

  5. Linux 命令 mv

    mv 命令 --no-target-directory 参数确保对目录进行重命名而不是移动 https://www.gnu.org/software/coreutils/manual/html_nod ...

  6. 修改了celery任务老是执行失败,跟shell中调试的结果不同

    因为没有重启celery,没有删除celerybeat-schedule,导致使用的task任务一直是原来缓存的,所以代码一直无法生效,也是日了狗了

  7. SSM回顾

    1.mybatis 认识MyBatis:持久化 第一个MyBatis程序(重点) CRUD 配置 ResultMap结果集映射(重点) 一对多 多对一 Log4j 分页 注解开发 动态SQL 缓存 2 ...

  8. sublime3插件BracketHighlighter的配置

    BracketHighlighter插件能为Sublime Text提供括号,引号这类高亮功能,但安装此插件后,默认没有高亮,只有下划线表示,不是很醒目,需要配置:1.在Sublime Text中用p ...

  9. Linux下rpm及yum安装jdk

    笔者使用的Linux操作系统为CentOS7,Linux中有三种安装jdk的方式,在这里笔者主要介绍两种方式,即rpm和yum安装及卸载jdk,还有一种是直接从官网下载 tar.gz 压缩文件上传到L ...

  10. 未能加载文件或程序集“***”或它的某一个依赖项,拒绝访问 <解决方法>

    报错信息如下: 注:为了部分隐私安全需要,已将有问题文件名替换为filename,系统win2008R2,Microsoft .NET Framework 版本:4.0.30319; ASP.NET ...