XML学习笔记(1):

学习xxe前先从菜鸟上简单学学xml:https://www.runoob.com/xml/xml-syntax.html

XML:

1.概念:

XML 指可扩展标记语言(eXtensible Markup Language)。
XML 被设计用来传输和存储数据。
XML 的设计宗旨是传输数据,而不是显示数据!
XML 标签没有被预定义。您需要自行定义标签。
XML 被设计为具有自我描述性。

2.XML与HTML区别:

XML 被设计用来传输和存储数据,其焦点是数据的内容
HTML 被设计用来显示数据,其焦点是数据的外观。

即HTML 旨在显示信息,而 XML 旨在传输信息。

比如以下代码:

<note>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>

这个 XML 文档没有做任何事情。它仅仅是包装在 XML 标签中的纯粹的信息。我们需要编写软件或者程序,才能传送、接收和显示出这个文档。

并且from、to标签并不是xml预定义标签,纯粹是文档编辑者自己发明的,而且很便于理解,这一点不同于html中所有标签都是预定义过的!

总结: XML 是对 HTML 的补充,不会替代 HTML;XML 是独立于软件和硬件的信息传输工具;XML 用于传输数据,而 HTML 用于格式化并显示数据

3.XML 树结构、DOM:

xml具有自我描述性的语法:

<?xml version="1.0" encoding="UTF-8"?>
<note>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>
<note>:根元素 
子元素:to, from, heading ,body

父、子以及同胞等术语用于描述元素之间的关系(类似html的DOM)。树的节点就是一个个对象,通过DOM对其操作。(DOM 通过解析 XML 文档,为 XML 文档在逻辑上建立一个树模型,这样通过操作这棵树和这些对象就可以完成对 XML 文档的操作,为处理文档的所有方面提供了一个完美的概念性框架。)

请添加图片描述

<line id="1"> the <bold>First</bold>line</line>

由于DOM“一切都是节点(everything-is-a-node)”,XML树的每个 Document、Element、Text 、Attr和Comment都是 DOM Node。

由上面例子可知:
DOM实质上是一些节点的集合。由于文档中可能包含有不同类型的信息,所以定义了几种不同类型的节点,如:Document、Element、Text、Attr、CDATASection、ProcessingInstruction、Notation、EntityReference、Entity、DocumentType、DocumentFragment等。

4.XML语法:

(1)声明:XML 声明文件的可选部分,如果存在需要放在文档的第一行

<?xml version="1.0" encoding="utf-8"?>

(2)所有的 XML 元素都必须有一个关闭标签
(3)XML 标签对大小写敏感
(4)XML 必须正确嵌套

在html中:

<b><i>This text is bold and italic</b></i>

这样是合法的。

但在xml中:

<b><i>This text is bold and italic</i></b>

必须正确嵌套,即b标签在最外层相互对应。
(5)在 XML 中,XML 的属性值必须加引号
(6)实体引用
在 XML 中,一些字符拥有特殊的意义。

如果您把字符 “<” 放在 XML 元素中,会发生错误,这是因为解析器会把它当作新元素的开始。

这样会产生 XML 错误:

<message>if salary < 1000 then</message>

为了避免这个错误,请用实体引用来代替 “<” 字符:

<message>if salary &lt; 1000 then</message>

在这里插入图片描述
(7)空格:
我们知道在html中多个空格会自动裁减(合并)为一个,但在xml中文档中的空格不会被删减。

在这里插入图片描述

5.XML元素:

(1)XML 元素指的是从(且包括)开始标签直到(且包括)结束标签的部分。

一个元素可以包含:

其他元素
文本
属性
或混合以上所有…

(2)XML 元素命名规则:

名称可以包含字母、数字以及其他的字符
名称不能以数字或者标点符号开始
名称不能以字母 xml(或者 XML、Xml 等等)开始
名称不能包含空格
使用"_"下划线字符是个好习惯
但避免出现“.”、“-”、“:”这样的字符

(3)XML可扩展性。

6.XML 属性:

1.针对元数据的 XML 属性
有时候会向元素分配 ID 引用。这些 ID 索引可用于标识 XML 元素,它起作用的方式与 HTML 中 id 属性是一样的。这个实例向我们演示了这种情况:

<messages>
<note id="501">
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>
<note id="502">
<to>Jani</to>
<from>Tove</from>
<heading>Re: Reminder</heading>
<body>I will not</body>
</note>
</messages>

上面的 id 属性仅仅是一个标识符,用于标识不同的便签。它并不是便签数据的组成部分。

2.可以根据 DTD 来验证 XML。

7.查看 XML 文件:

在所有主流的浏览器中,均能够查看原始的 XML 文件。
不要指望 XML 文件会直接显示为 HTML 页面!

为什么 XML 显示这个样子?
XML 文档不会携带有关如何显示数据的信息。

由于 XML 标签由 XML 文档的作者"发明",浏览器无法确定像 <table> 这样一个标签究竟描述一个 HTML 表格还是一个餐桌。

在没有任何有关如何显示数据的信息的情况下,大多数的浏览器都会仅仅把 XML 文档显示为源代码。

8.使用 XSLT 显示 XML:

使用 CSS 格式化 XML 不是常用的方法,我们通常用xslt。
XSLT 是首选的 XML 样式表语言。
通过使用 XSLT,您可以把 XML 文档转换成 HTML 格式。

xslt教程:https://www.runoob.com/xsl/xsl-tutorial.html

9.XML命名空间:

提供避免元素命名冲突的方法。

命名空间,可以在他们被使用的元素中或者在 XML 根元素中声明。

命名空间声明的语法如下。xmlns:前缀=“URI”。(不是url!URI:统一资源标识符;URL:统一资源定位器,URI包括URL!)

<root> <!-- 也可以在root内添加xmlns属性! -->

<h:table xmlns:h="http://www.w3.org/TR/html4/">
<h:tr>
<h:td>Apples</h:td>
<h:td>Bananas</h:td>
</h:tr>
</h:table>

<f:table xmlns:f="http://www.w3cschool.cc/furniture">
<f:name>African Coffee Table</f:name>
<f:width>80</f:width>
<f:length>120</f:length>
</f:table>

</root>

命名空间,可以在他们被使用的元素中或者在 XML 根元素中声明。

在这里插入图片描述

10.XML CDATA:

XML 文档中的所有文本均会被解析器解析。(包括标签/元素)

PCDATA - 被解析的字符数据,是 XML 解析器解析的文本数据使用的一个术语。

只有 CDATA 区段中的文本会被解析器忽略

术语 CDATA 是不应该由 XML 解析器解析的文本数据。

“<”“&” 字符在 XML 元素中都是非法的。

“<” 会产生错误,因为解析器会把该字符解释为新元素的开始。

“&” 会产生错误,因为解析器会把该字符解释为字符实体的开始。

某些文本,比如 JavaScript 代码,包含大量 “<” 或 “&” 字符。为了避免错误,可以将脚本代码定义为 CDATA。

CDATA 部分中的所有内容都会被解析器忽略。

CDATA 部分由 “<![CDATA[" 开始,由 "]]>” 结束:

<script>
<![CDATA[
function matchwo(a,b)
{
if (a < b && a < 0) then
{
return 1;
}
else
{
return 0;
}
}
]]>
</script>

关于 CDATA 部分的注释

CDATA 部分不能包含字符串 “]]>”。也不允许嵌套的 CDATA 部分。

标记 CDATA 部分结尾的 “]]>” 不能包含空格或换行。

11.服务器上XML:

如需使用 PHP 从服务器上生成 XML 响应,请使用下面的代码:

<?php
header("Content-type: text/xml");
echo "<?xml version='1.0' encoding='ISO-8859-1'?>";
echo "<note>";
echo "<from>Jani</from>";
echo "<to>Tove</to>";
echo "<message>Remember me this weekend</message>";
echo "</note>";
?>

请注意,响应头部的内容类型必须设置为 “text/xml”

同样可以用asp(服务器上)/数据库生成xml,或在服务器上通过 XSLT 转换 XML(XML 文件转换为 XHTML:),或通过 ASP 把 XML 保存为文件(把文档保存到服务器)。

具体实现可参考:https://www.runoob.com/xml/xml-server.html

xml实例: https://www.runoob.com/xml/xml-examples.html
xml编辑器:https://www.runoob.com/xml/xml-editors.html

之后xml学习:

xml技术导航列表:https://www.runoob.com/xml/xml-technologies.html
                               https://www.runoob.com/xml/xml-summary.html

  • 用 XML Schema 定义 XML 的结构和数据类型
  • 用 XSLT 来转换 XML 数据
  • 用 SOAP 来交换应用程序之间的 XML 数据
  • 用 WSDL 来描述网络服务
  • 用 RDF 来描述网络资源
  • 用 XPath 和 XQuery 来访问 XML 数据
  • 用 SMIL 来定义图形
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值