zoukankan      html  css  js  c++  java
  • 万能的数据传输格式——XML/json

    一、XML简介

    1、历史起源

    gml(1969)->sgml(1985)->html(1993)->xml(1998)

    Genaral  Markup  language

    gml :通用标记语言

    IBM 1969 家共同研究一个课题:一个程序如何运行在多个系统中(系统可移植性)

    sgml :标准通用标记语言

    IBM 1985 对基本的gml进行了升级

    html :英国科学家博纳斯.  sgml 中定义了20html标签实现了世界上第一个网页

    html 1993 W3C 进行推广和使用

    xml 1998 

    2、什么是xml

    XML

        称:Extensible Markup Language

    中文名:可扩展标记语言

    用于标记电子文件使其具有结构性的标记语言,可以用来标记数据,定义数据类型,允许用户对自己的标记语言进行定义的源语言。

    面试题:什么是XMLXML主要用途是什么?

    答:可扩展标记语言,XML用于传输数据与存储数据

    3xmlhtml区别

    1)html标签不能自定义,从标签上不能达到“见词知意”的目的

    <table></table>

    <表格></表格>

    2)html将数据与格式绑定在一起

    xml只负责数据的传输与存储,其标签没有任何意义

    3)不同浏览器解html不同

    html语法要求不严格

    等等

    html主要用于数据的显示,xml主要用于数据传输

    4xml应用场景

    1)充当程序间交互的中间件(通讯标准)

    快递100接口(Java XML PHP

    2)小型数据库

    php+mysql 金山词霸

    php+xml 金山词霸

    5、xml传输原理

    图片1

     

    二、XML基本语法

    1、快速入门

    2xml基本语法

    文档声明

    元素

    元素属性

    注释

    特殊字符

    l CDATA区段

    处理指令

    1)文档声明

    需要先使用文档声明来声明XML文档

    最简单的语法:

    l <?xml version=“1.0” encoding=“utf-8”?>

    version 版本为1.0 (代表当前xml文档的版本)

    encoding 编码格式 (编码格式utf-8big5gb2312

    standalone 是否独立(是否依靠dtd文件)  默认yes

    作用:告诉浏览器在解释时所采用的版本与格式等信息

    2)元素(标记、标签)

    一个标签分为起始和结束标签(不能省略)

    错误:<title>三国志

    正确:<title>三国志</title>  

          <title />

    一个标签中可以嵌套若干子标签,但所有标签必须合理的嵌套,不允许有交叉嵌套

    错误:<title><price></title></price>

    正确:<title><price></price></title>

    一个XML文档必须有且仅有一个根标签,其他标签都是这个根标签的子标签

    <html>

    <head></head>

    </html>

    元素的命名规则

    元素(标签)的名称可以包含字母、数字、减号、下划线和英文句点

        正确的:<abc></abc>

        错误的:<!@#></!@#>

    严格区分大小写;

    正确的:<abc></abc>

    错误的:<abc></ABC>

    只能以字母或下划线开头;

    正确的:<abc123></abc123>

    错误的:<123abc></123abc>

    名称字符之间不能有空格或制表符;

    正确的:<abc></abc>

    错误的:<a b c></a b c>

    名称字符之间不能使用冒号

    正确的:<abc></abc>

    错误的:<ab:c></ab:c>

    3)元素属性

    一个元素可以有多个属性

    属性值一定要用引号(单引号或双引号)引起来

    属性名称的命名规范与元素的命名规范相同

    元素中的属性是不允许重复的

    标签属性所代表的信息也可以被改成用子元素的形式来描述

    4)注释

    基本语法:

    <!--注释内容-->

    注:XML声明之前不能有注释,注释不能嵌套

    5)特殊字符

    可以使用以下字符代替xml文档中的特殊字符

    图片2

     

    6CDATA区段(CDATA节)

    CDATACharacter Data

    作用:把标签当做普通文本内容

    语法:<![CDATA[内容]]>

    示例代码:

    对于特殊字符与CDATA区段,比较?

    共同点:都是用于对特殊字符的转化

    不同点:特殊字符只能用于数据量较少的情况,比如小于号、大于号等情况

      CDATA区段可以用于大批量数据的转化,如文章描述、文章内容等信息

    PHP XML解析原理

    1为什么需要XML解析

    图片3

     

    2如何进行XML解析(PHP

    PHP DOM模型进行XML解析(增加、修改、删除)

    PHP SimpleXML查询)

    Json  json_encode()  json_decode()(推荐)

    PHP DOM解析XML

    1PHP DOM模型

    4PHP解析XML步走:

    1在内存中开辟存储空间——”

    2加载XML文件到内存,并形成DOM树结构

    3获取同级兄弟节点——“

    4、获取指定的文本节点并读取其值——“

    a)开辟内存空间,形成

    要用到的知识点:

    DOMDocument

    图片4

     

    参数说明:

    $versionxml版本号,采用1.0

    $encoding编码格式,utf-8

    b)加载XML文件到内存,形成DOM结构

    要用到的知识点:

    图片5

     

    参数说明:

    $filename要载入xml文件的名称

    c找到同级兄弟节点,形成

    要用到的知识点

    DOMNodeList

    图片6

     

    参数说明

    $length获取到当前串的长度

    item(索引,默认从0开始)获取指定节点

    getElementsByTagName()

    图片7

     

    参数说明:

    $name要获取元素标签、标记)的名称

    d)获取同级兄弟节点输出其值

    要用到的知识点:

    图片8

     

    参数说明:

    $index通过索引获取指定元素

    2PHP DOM查询与遍历

    3PHP DOM增加操作

    增加四步走:

    1开辟面空间

    2载入xml到内存,形成DOM

    3)创建节点并追加

    4保存内存数据到XML文件中

    要用到的知识点:

    图片9

     

    参数说明:

    $name :创建的节点名称

    $value 可选参数,创建节点的值

    图片10

     

    参数说明:

    $newnode 追加的新节点名称(要求类型为DOMElementDOMNode

    图片11

     

    参数说明:

    $filename:要保存xml文件名称

    4PHP DOM删除操作

    删除操作步走:

    1)开辟内存空间,形成

    2载入xml文件到内存

    3找到要删除的节点

    4找到其父节点移除指定的子节点

    5保存内存数据到xml文件中

    要用到的知识点:

    图片12

     

    参数说明:

    $oldnode要移出的节点

    5PHP DOM更新操作

    PHP DOM更新操作分为两种:

    1值操作,只更新某个节点的值信息通过nodeValue属性设置即可

    2节点操作,需要特定的函数辅助完成通过replaceChild方法设置即可

    值更新操作步走:

    1开辟内存空间,形成

    2载入xml文件到内存,形成dom

    3)找到要更新的节点,更新其值

    4保存内存数据到XML文件中

    节点更新操作六步走

    1开辟内存空间,形成

    2载入xml文件到内存

    3)创建新节点

    4找到旧节点

    5)找到父节点,然后新节点替换老节点

    6保存内存数据到XML文件中

    要用到的知识点:

    图片13

     

    参数说明:

    $newnode:创建的新节点

    $oldnode:要更新的旧节点

    6属性操作

    1属性的添加更新操作

    要用到的知识点:

    图片14

     

    在属性的添加与更新操作用到的是同一个方法setAttribute当当前元素无属性时,系统会自动添加属性,如果已存在,则更新其值

    参数说明:

    $name属性名称

    $value属性的值

    2属性的判断与读取操作

    bool DOMElement::hasAttribute ( string $name ) :判断当前元素是否具有某一属性

    bool DOMNode:: hasAttributes ( void ) :判断当前元素是否具有属性

    string DOMElement::getAttribute( string $name ) 获取元素的属性

    参数说明:

    $name 属性名称

    3移除属性

    要用到的知识点:

    bool DOMElement::removeAttribute ( string $name )

    参数说明:

    $name要移出的属性名称

    PHP SimpleXML实现对XML增删改查

    1、载入XML文件到内存,并形成SimpleXML对象

    simpleXMLElement simplexml_load_file ( string $filename) 载入xml文件到内存并生成simpleXML对象

    SimpleXMLElement::__construct ( string data)

    示例代码:

    2输入指定文本节点的值

    3遍历输出所有数据

    方法一:通过foreach直接遍历数组

    方法二:

    通过children()方法实现对xml数据的遍历输出

    图片15

     

    该方法可以直接获取到当前对象的子节点

    4输出属性

    simplexml对象中,对于属性的读取有些特殊,不能通过以上方法直接读取,必须借助外在方式:

    通过数组方式直接读取:

    通过attributes()方法获取到属性对象,并输入属性的值

    图片16


  • 相关阅读:
    linux tar.gz zip 解压缩 压缩命令
    VC中获取窗体句柄的各种方法
    CodeForces 377B---Preparing for the Contest(二分+贪心)
    Response.Write具体介绍
    Linux实现字符设备驱动的基础步骤
    Android Bundle类
    Otacle表查询
    android该系统的应用API选择演示版本
    微机原理(2)8086
    大话设计の创建模式
  • 原文地址:https://www.cnblogs.com/wepe/p/7424642.html
Copyright © 2011-2022 走看看