首先进行简单说明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. MySQL Other--mysql_config_editor学习使用

    mysql_config_editor工具 为避免MySQL明文密码出现在脚本或命令中,从MySQL5.6开始提供了mysql_config_editor工具,可以将数据库连接信息进行加密并保存到用户 ...

  2. 【Cookie】java.lang.IllegalArgumentException An invalid character [32] was present in the Cookie value

    创建时间:6.30 java.lang.IllegalArgumentException: An invalid character [32] was present in the Cookie va ...

  3. Python input() 函数

    Python3.x 中 input() 函数接受一个标准输入数据,返回为 string 类型. Python2.x 中 input() 相等于 eval(raw_input(prompt)) ,用来获 ...

  4. JAVA并发-同步器AQS

    什么是AQS aqs全称为AbstractQueuedSynchronizer,它提供了一个FIFO队列,可以看成是一个用来实现同步锁以及其他涉及到同步功能的核心组件,常见的有:ReentrantLo ...

  5. offsetWidth的bug

    #div1{width:200px;border:1px solid red;} 这个时候如果用 offsetWidth 提取 #div1 的宽  得到的值是 202: 也就是说 offsetWidt ...

  6. SparkSQL 中 RDD 、DataFrame 、DataSet 三者的区别与联系

    一.SparkSQL发展: Shark是一个为spark设计的大规模数据仓库系统,它与Hive兼容      Shark建立在Hive的代码基础上,并通过将Hive的部分物理执行计划交换出来(by s ...

  7. browserslist详解

    https://www.jianshu.com/p/d45a31c50711 https://juejin.im/post/5b8cff326fb9a019fd1474d6 https://githu ...

  8. 【线段树】【P5522】[yLOI2019] 棠梨煎雪

    C [yLOI2019] 棠梨煎雪 Background 岁岁花藻檐下共将棠梨煎雪 自总角至你我某日辗转天边 天淡天青 宿雨沾襟 一年一会信笺却只见寥寥数言 --银临<棠梨煎雪> Desc ...

  9. Python网络爬虫神器PyQuery的使用方法

    #!/usr/bin/env python # -*- coding: utf-8 -*- import requests from pyquery import PyQuery as pq url ...

  10. 对post提交数据Content-Type的理解

    Content-Type是指http/https发送信息至服务器时的内容编码类型,contentType用于表明发送数据流的类型,服务器根据编码类型使用特定的解析方式,获取数据流中的数据. 在网络请求 ...