xml解析

java web-4.1xml基础

谁说我不能喝 提交于 2020-03-08 15:58:42
xml_概述 概念:Extensible Markup Language 可扩展标记语言 (可扩展:标签都是自定义的。) 功能: 存储数据:配置文件,在网络中传输 xml和html区别: 1.xml标签是自定义的,html是预定义的 2.xml的语法严格,html语法松散 3.xml是存储数据的,html是展示数据的 xml_快速入门 基本语法 : 1.xml文档后缀名.xml 2.xml文档第一行必须定义为文档声明 3.xml文档有且仅有一个根标签 4.属性值必须使用引号(单双都可以)引起来 5.标签必须正确关闭 6.xml标签区分大小写 xml_组成部分 1. 文档声明 (1)格式: <?xml 属性列表 ?> (2)属性列表: version:版本号,必须的属性 encoding:编码方式。告知解析引擎当前文档使用的字符集,默认值:ISO standalone:是否独立。取值:yes:不依赖其他文件。no:依赖其他文件 2. 指令 : 结合css 3. 标签 : 标签名称自定义。 规则: (1)名称可以包含字母,数字和其他的字符; (2)名称不能以数字或者标点符号开始 (3)名称不能以字母xml(或者XML,Xml等等)开始 (4)名称不能包含空格 4. 属性 id属性值唯一 5. 文本 CDATA区:在该区域中的数据会被原样展示 格式: <![CDATA[数据]]> 来源:

JSON VS XML

那年仲夏 提交于 2020-03-07 21:38:41
  ·可读性   JSON和XML的可读性可谓不相上下,一边是建议的语法,一边是规范的标签形式,很难分出胜负。   ·可扩展性   XML天生有很好的扩展性,JSON当然也有,没有什么是XML能扩展,JSON不能的。   ·编码难度   XML有丰富的编码工具,比如Dom4j、JDom等,JSON也有json.org提供的工具,但是JSON的编码明显比XML容易许多,即使不借助工具也能写出JSON的代码,可是要写好XML就不太容易了。   ·解码难度   XML的解析得考虑子节点父节点,让人头昏眼花,而JSON的解析难度几乎为0。这一点XML输的真是没话说。   ·流行度   XML已经被业界广泛的使用,而JSON才刚刚开始,但是在Ajax这个特定的领域,未来的发展一定是XML让位于JSON。到时Ajax应该变成Ajaj (Asynchronous JavaScript and JSON)了。 来源: https://www.cnblogs.com/anjing/archive/2009/12/03/1616152.html

XmlReader

廉价感情. 提交于 2020-03-07 16:20:43
  XmlReader用于读取Xml文件,XmlWriter用于将数据写到Xml文件。其实,在印象当中,XML很多的操作类都支持直接Save、Read也支持接受XmlReader与XmlWriter类的示例作为参数,但是为什么还要有这个两类来专门用于读写XML文件呢?因为它们有强大的自定义格式功能; 一、XmlReader的使用   XmlReader类专门用于读取Xml文件,最大的特点在于支持Settings。 属性 说明 AttributeCount 当在派生类中被重写时,获取当前节点上的属性数 BaseURI 当在派生类中被重写时,获取当前节点的基 URI CanReadBinaryContent 获取一个值,该值指示 XmlReader 是否实现二进制内容读取方法 Depth 获取 XML 文档中当前节点的深度 EOF 获取一个值,该值指示此读取器是否定位在流的结尾 HasAttributes 获取一个值,该值指示当前节点是否有任何属性 HasValue 获取一个值,该值指示当前节点是否可以具有 Value IsDefault 获取一个值,该值指示当前节点是否是从 DTD 或架构中定义的默认值生成的特性 IsEmptyElement 获取一个值,该值指示当前节点是否为空元素(例如 <MyElement/>) Item 获取具有指定索引的属性的值,支持整形,字符串

XML 命名空间(XML Namespaces)

偶尔善良 提交于 2020-03-07 02:23:06
命名冲突 在 XML 中,元素名称是由开发者定义的,当两个不同的文档使用相同的元素名时,就会发生命名冲突。 这个 XML 文档携带着某个表格中的信息: <table> <tr> <td>Apples</td> <td>Bananas</td> </tr> </table> 这个 XML 文档携带有关桌子的信息(一件家具): <table> <name>African Coffee Table</name> <width>80</width> <length>120</length> </table> 假如这两个 XML 文档被一起使用,由于两个文档都包含带有不同内容和定义的 <table> 元素,就会发生命名冲突。 XML 解析器无法确定如何处理这类冲突。 使用前缀来避免命名冲突 此文档带有某个表格中的信息: <h:table> <h:tr> <h:td>Apples</h:td> <h:td>Bananas</h:td> </h:tr> </h:table> 此 XML 文档携带着有关一件家具的信息: <f:table> <f:name>African Coffee Table</f:name> <f:width>80</f:width> <f:length>120</f:length> </f:table> 现在,命名冲突不存在了,这是由于两个文档都使用了不同的名称来命名它们的

微信支付的SDK曝出重大漏洞(XXE漏洞)

浪子不回头ぞ 提交于 2020-03-07 02:16:00
一、背景 昨天(2018-07-04)微信支付的SDK曝出重大漏洞(XXE漏洞),通过该漏洞,攻击者可以获取服务器中目录结构、文件内容,如代码、各种私钥等。获取这些信息以后,攻击者便可以为所欲为,其中就包括众多媒体所宣传的“0元也能买买买”。 漏洞报告地址;http://seclists.org/fulldisclosure/2018/Jul/3 二、漏洞原理 1. XXE漏洞 此次曝出的漏洞属于XXE漏洞,即XML外部实体注入(XML External Entity Injection)。 XML文档除了可以包含声明和元素以外,还可以包含文档类型定义(即DTD);如下图所示。 在DTD中,可以引进实体,在解析XML时,实体将会被替换成相应的引用内容。该实体可以由外部引入(支持http、ftp等协议,后文以http为例说明),如果通过该外部实体进行攻击,就是XXE攻击。 可以说, XXE漏洞之所以能够存在,本质上在于在解析XML的时候,可以与外部进行通信;当XML文档可以由攻击者任意构造时,攻击便成为可能。 在利用XXE漏洞可以做的事情当中,最常见最容易实现的,便是读取服务器的信息,包括目录结构、文件内容等;本次微信支付爆出的漏洞便属于这一种。 2. 微信支付漏洞 本次漏洞影响的范围是:在微信支付异步回调接口中,使用微信支付SDK进行XML解析的应用

JavaWeb学习三、Maven与XML

匆匆过客 提交于 2020-03-07 01:02:33
五、Maven https://mvnrepository.com/ 六、XML 6.1 概念: Extensible Markup Language 可扩展标记语言 可扩展:标签自定义 功能:存储数据 xml和html的区别: xml标签都是自定义的,html标签是预定义。 xml的语法严格,html语法松散 xml是存储数据的,html是展示数据 语法: 基本语法: xml文档的后缀名 .xml xml第一行必须定义为文档声明 xml文档中有且仅有一个根标签 属性值必须使用引号(单双都可)引起来 标签必须正确关闭 xml标签名称区分大小写 组成成分: 文档声明 指令 标签 属性 文本 约束: 框架使用者 分类 DTD Schema 解析: 操作xml文档 解析 写入 解析xml的方式 DOM:将标记语言文档一次性加载进内存,在内存中形成一颗dom树 SAX:逐行读取,基于事件驱动的 xml常见的解析器 JAXP DOM4J Jsoup PULL 来源: https://www.cnblogs.com/yfyyy/p/12431871.html

[红日安全]Web安全Day8 - XXE实战攻防

荒凉一梦 提交于 2020-03-06 17:26:12
本文由红日安全成员: ruanruan 编写,如有不当,还望斧正。 大家好,我们是 红日安全-Web安全攻防小组 。此项目是关于Web安全的系列文章分享,还包含一个HTB靶场供大家练习,我们给这个项目起了一个名字叫 Web安全实战 ,希望对想要学习Web安全的朋友们有所帮助。每一篇文章都是于基于漏洞简介-漏洞原理-漏洞危害-测试方法(手工测试,工具测试)-靶场测试(分为PHP靶场、JAVA靶场、Python靶场基本上三种靶场全部涵盖)-实战演练(主要选择相应CMS或者是Vulnhub进行实战演练),如果对大家有帮助请 Star 鼓励我们创作更好文章。如果你愿意加入我们,一起完善这个项目,欢迎通过邮件形式( sec-redclub@qq.com )联系我们。 1. XXE概述 XXE(XML External Entity Injection)即XML外部实体注入。漏洞是在对非安全的外部实体数据进行处理时引发的安全问题。 下面我们主要介绍PHP语言下的XXE攻击. 1.1 XML基础 XML是可扩展的标记语言(eXtensible Markup Language),设计用来进行数据的传输和存储。 1.1.1文档结构 XML文档结构包括XML声明、DTD文档类型定义(可选)、文档元素。 <!--XML声明--> <?xml version="1.0"?> <!--文档类型定义--> <

数据解析

冷暖自知 提交于 2020-03-05 23:09:07
1、相关定义: JSON 作为一种轻量级的数据交换格式,正在逐步取代XML,成为网络数据的通用格式 基于JavaScript的一个子集 易读性略差,编码手写难度大,数据量小 JSON格式取代了XML给网络传输带来了很大的便利,但是却没有了XML的一目了然,尤其是JSON数据很长的时候,我们会陷入繁琐复杂的数据节点查找中 XML 可扩展标记语言 用于标记电子文件使其具有结构性的标记语言,可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言 易读性高,编码手写难度小,数据量大 2、JSON格式说明: 对象 {} 格式 {key : value, key : value,...} 的键值对的结构 可以反序列化为OC中的NSDictionary 数组 [] 格式 ["java","javascript","vb",...] 可以反序列化为OC中的NSArray 提示 JSON的数据格式与OC中的快速包装方法非常类似 JSON的数据格式同样支持嵌套 3、 解析服务器端返回JSON数据: 从iOS 5开始,使用NSJSONSerialization对JSON解析 其他常见的三种JSON解析第三方库: SBJson 因为API简单易用,可能还会有一些应用中留存 JSONKit JSONKit的开发者称:JSONKit的性能优于苹果 TouchJson 4

iOS基础 - XML & JSON

半城伤御伤魂 提交于 2020-03-05 23:08:03
一、HTML & XML HTML 是用来描述网页的一种语言 HTML 指的是超文本标记语言 (Hyper Text Markup Language) HTML 不是一种编程语言,而是一种标记语言 (markup language) HTML 被设计用来显示数据 HTML5 是下一代的 HTML 增加了用于绘画的 canvas 元素 用于媒介回放的 video 和 audio 元素等等 XML XML 是一种标记语言,很类似 HTML XML 的设计宗旨是传输和存储数据,而非显示数据 二、XML & JSON 简介 JSON 作为一种轻量级的数据交换格式,正在逐步取代 XML ,成为网络数据的通用格式 基于 JavaScript 的一个子集 易读性略差,编码手写难度大,数据量小 JSON 格式取代了 XML 给网络传输带来了很大的便利,但是却没有了 XML 的一目了然,尤其是 JSON 数据很长的时候,我们会陷入繁琐复杂的数据节点查找中 XML 可扩展标记语言 用于标记电子文件使其具有结构性的标记语言,可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言 易读性高,编码手写难度小,数据量大 三、JSON 格式说明 对象: {} 括起来的内容 数据结构为 {key : value,key : value,...} 的键值对的结构 可以反序列化为 OC 中的

Java学习-027-JSON 之一 -- 初识

放肆的年华 提交于 2020-03-05 23:06:54
通常,我们在生活中使用的应用产品(无论是 Web应用还是 App 应用),又或者我们平常的信息交流,均无可避免的存在着信息交互,在信息交互的过程中就有着信息载体的存在。那么,在我们熟知的网络应用产品中,数据是以什么样的形式传递的呢?我在日常的测试开发工作中经常接触的常见的数据传递方式有 JSON、XML、文本文件 等,XML大家都比较熟悉,JSON又是什么呢?跟 XML 的区别又有什么区别呢,请看下文。 一、JSON概述 JSON,英文名称是:JavaScript Object Notation,是一种轻量级的数据交换格式,是基于 ECMAScript 的一个子集。JSON 采用完全独立于语言的文本格式,因而其能被 C、C#、Java、JavaScript、Python 等大多数的编程语言所支持,因而使 JSON 成为比较理想的数据交换语言。易于程序阅读和编写,同时也易于机器解析和生成(一定程度上可提高网络传输速率)。 二、JSON基本结构 通常 JSON 有两种基本结构: 对象:对象在js中表示为“{}”括起来的内容,数据结构为 {key:value,key:value,...}的键值对的结构,在面向对象的语言中,key为对象的属性,value为对应的属性值,所以很容易理 解,取值方法为 对象.key 获取属性值,这个属性值的类型可以是 数字、字符串、数组、对象几种。 数组