XML学习

前言

因为要学习XXE漏洞,所以学之前先了解,学习一波XML,顺带做一下笔记,方便以后查阅。


什么是XML

  • XML全称是 Extensible Markup Language ,中文为可扩展表示语言
  • XML 是独立于软件和硬件的信息传输工具。

XML作用

XML 是被设计为传输和存储数据的,它的侧重的是数据的内容。


XML与HTML的主要差异

  • 首先明确一点,XML 不是 HTML 的替代。
  • HTML 是被设计来显示信息,侧重于数据的外观,而XML 旨在传输信息

示例XML代码

<?xml  version="1.0" encoding="utf-8"?>
<resume>
<name>playwin</name>
<gender>male</gender>
<skill>xml</skill>
</resume>

XML语法

  • 下面分析这串代码:
    • 为了形成良好的文档习惯,也为了给他人阅读的方便,尽量加上<?xml version=“1.0” encoding=“utf-8”>

      • <?xml ?>标签
      • version 是版本
      • encoding 字符编码
    • 下面< resume > , < name >等标签是xml的基本组成部分,有斜杆和无斜杆形成一对标签

    • <标签名字>内容</标签名字>

    • xml没有定义标签,根据个人需要,可以随意起名,尽量简洁,相比html标签,可以让标签里的内容更加直观

    • 标签大小写必须要一致,像< name>< /Name>这样的是不合法的

    • 标签必须要闭合,也就是有< name>,就必须要有< /name>关闭标签

    • 可以这样理解,因为xml对大小写敏感,所以< name>< /Name>是两个不同的标签,两者都没闭合,因此会出错,不合法

    • 虽然标签可以随意命名,随意增加,但必须要有根标签,也就是有一个标签包着所有标签,上面代码的< resume>< /resuem> 就是

    • 也可以说成< name>,< gender>,< skill>等标签嵌套在< resume>中,< name>标签中也是可以嵌套其他标签的

什么是XML的元素

  • XML 元素指的是从(且包括)开始标签直到(且包括)结束标签的部分。
    • 示例代码中< name>,< gender>,< skill>就是< resume>的元素
    • 元素中也可以有元素,也可以是文本
    • 元素也可以有属性

什么是XML的属性

  • 属性可以说是标签的额外附加信息
  • 属性有时处理文件时必不可少

属性的使用

  • 示例代码<?xml>中version ,encoding就是它的属性,1.0和utf-8就是属性值
  • 属性值必须被"双引号"或者’单引号’包围,不可两个混用
  • 属性使用:
<name  gender='male'> playwin </name>

<name> playwin </name>
<gender> male </gender>
  • 不要滥用属性

    • 像示例代码如果被写成这样
    <?xml  version="1.0" encoding="utf-8">
    <resume>
    <name gender='male' skill='xml' age='666'>playwin</name>
    </resume>
    

    这样的用法就违背xml的设计,xml可不是这样使用的

    尽量使用元素来描述数据。而仅仅使用属性来提供与数据无关的信息。

  • 属性的缺点

    • 属性无法包含多重的值(元素可以)
    • 属性无法描述树结构(元素可以)
    • 属性不易扩展(为未来的变化)
    • 属性难以阅读和维护

实体引用

  • 在xml中有一些字符拥有特殊的意义
  • 如果你把字符 “<” 放在 XML 元素中,会发生错误,因为解析器会把它当作新元素的开始。
  • 这样会产生 XML 错误:
<num> if num < 1000 </num>
  • 为了避免这个错误,用实体引用来代替 “<” 字符
<num> if num &lt; 1000</num>
  • 在 XML 中,有 5 个预定义的实体引用:
    在这里插入图片描述
    Ps:在 XML 中,只有字符 “<” 和 “&” 确实是非法的。大于号是合法的,但是尽量用实体引用来代替它。

演示示例代码

在这里插入图片描述

错误演示

在这里插入图片描述

扩展

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值