xml 知识点梳理 -- 整理自广州传智王老师

前端之家收集整理的这篇文章主要介绍了xml 知识点梳理 -- 整理自广州传智王老师前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

xml知识小结

xml的结构

文档声明:

<?xmlversion=’1.0’encoding=’utf-8’?>

元素:(标签标记

元素属性

一个元素可以有多个属性

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

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

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

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

处理指令

必须以“<?”作为开头,以“?>”作为结尾

xml指令

xml-stylesheet指令

例:<?xml-stylesheettype="text/css“href=“style.css"?>

注释:

<!--这是注释-->注释可以在浏览器中显示

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

@H_403_67@

CDATA区段

语法:

<![CDATA[

内容

]]>

xmlDTD文档约束

约束文档定义了xml允许出现的元素名称属性、以及元素出现顺序等

DTD约束文档分类

内部DTD

<!DOCTYPE根元素[

DTD约束

]>

外部DTD

<!DOCTYPE根元素SYSTEM“外部DTD的路径”>

公用DTD

<!DOCTYPE根元素PUBLIC“DTD标识名”“公用DTDURI”>

DTD约束编写

定义元素(标记或是标记)

<!ELEMENT元素名元素类型>

元素类型

(#PCDATA):该类型包含任何字符数据,不能含有子元素

EMPTY:该类型不能含有子元素或是文本,可以有属性

ANY: 该元素包含所以内容(适用于根元素)

(子元素):定义子元素只能出现一次

(子元素1,子元素2,...):元素按规定的名称及顺序出现

(子元素+):当前元素出现1+

(子元素*):当前元素出现0+

(子元素?):当前元素查询01

(子元素1|子元素2):互斥元素,只能选一

定义属性

基本语法:

<!ATTLIST元素名称属性名称属性类型默认值>

属性类型

CDATA :字符或是数字(文本类型)

(en1|en2|en....):枚举类型

ID :属性唯一

IDREF :引用已定义的ID属性

#required :必填(默认值)

#IMPLIED :可选

#FIXED :固定值

值 :直接使用默认值

定义实体

引用实体

基本语法:

@H_403_67@<!ENTITY实体名称实体的值”>

@H_403_67@

@H_403_67@引用语法:[xml中使用]

@H_403_67@&实体名;

@H_403_67@

@H_403_67@

参数实体[参数实体必须在外部DTD中定义,在外部dtd中使用]

基本语法:

<!ENTITY%实体名称实体的值”>

引用语法:

%实体名;

PHP解析XML数据

PHPDOM模型解析XNL

PHPDOM

DOMDocument:文档类

DOMNodeList:节点列表类

DOMNode : 节点类

DOMElement:节点类

DOMDocument类:

基本语法:

DOMDocument::__construct(string$version,string$encoding){}

load方法的使用

domdocument_obj->load(‘xml_filename.xml’);

item方法的使用:

domdocument_obj->item(intindex);

案例:PHPDOM查询操作

1】开辟内存空间形成

@H_403_67@$dom=newDOMDocument(‘1.0’,’utf-8’);

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

@H_403_67@$dom->load(‘test.xml’);

3获取同级兄弟节点,形成串

@H_403_67@$names=$dom->getElementsByTagName(‘元素名字’);

4获取节点名称为王大锤的name节点信息,所谓的点

@H_403_67@$name=$names->nodeValue;

以上代码简化:

@H_403_67@$dom->getElementsByTageName(‘name’)->item(0)->nodeValue;

PHPDOM属性操作

#判断某个节点是否具有指定的属性

boolDOMElement::hasAttribute(string$name);

#判断某个节点是否有指定的属性

boolDOMNode::hasAttributes(void);

#获取某个节点的指定属性的值

stringDOMElement::getAttribute(string$name);

PHPDOM的增删改查操作

PHPDOM增操作:

@H_403_67@创建新节点的方法

@H_403_67@DOMDocument::createElement(stringname[]);

@H_403_67@

@H_403_67@追加新节点:

@H_403_67@DOMDocument::appendChild(DOMNode$newnode);

@H_403_67@保存操作:

@H_403_67@DOMDocument::saveXML(filename);

PHPDOM删操作:

@H_403_67@移除节点操作:

@H_403_67@DOMNode::removeChild(DOMNode$nodeName);

@H_403_67@

PHPDOM改操作:

@H_403_67@更新节点操作:

@H_403_67@/**

@H_403_67@*@H_403_67@@paramstring$newNode更新的节点

@H_403_67@*@paramstring$oldNode旧的节点

@H_403_67@*/

@H_403_67@DOMNode::replaceChild(DOMNode$newNode,DOMNode$oldNode);

PHPDOM属性操作:

@H_403_67@为节点添加属性

@H_403_67@/**

@H_403_67@*@H_403_67@@paramstring添加属性的名字

@H_403_67@*@paramstring属性的值

@H_403_67@*/

@H_403_67@setAttribute(string$name,string$value);

@H_403_67@

@H_403_67@更新节点属性

@H_403_67@/**

@H_403_67@*@H_403_67@@paramstring要更新的属性的名字

@H_403_67@*@paramstring属性的值

@H_403_67@*/

@H_403_67@setAttribute(string$name,string$value);

@H_403_67@

@H_403_67@移除指定节点的属性

@H_403_67@/**

@H_403_67@*@H_403_67@@paramstring删除属性名字

@H_403_67@*/

@H_403_67@removerAttribute(string$name);

@H_403_67@

@H_403_67@

simpleXML解析XML

读取xml数据

@H_403_67@基本语法:

@H_403_67@/*

@H_403_67@*@paramstring$filename要加载的xml文件

@H_403_67@*/

@H_403_67@simpleXMLElementsimplexml_load_file(string$filename);

@H_403_67@

@H_403_67@

@H_403_67@/**

@H_403_67@*@H_403_67@@paramstring$str已经定义好的xml字符内容

@H_403_67@*/

@H_403_67@simpleXMLElementsimplexml_load_string(string$str);

@H_403_67@

查询xml数据

@H_403_67@通过children()方法获取xml数据

@H_403_67@

@H_403_67@通过foreach()方法获取

@H_403_67@

@H_403_67@通过$xml->result[0]->nodeName直接获取

xml元素的添加

@H_403_67@/**

@H_403_67@* @paramstring$name添加的元素的名字

@H_403_67@* @paramstring$value设置值

@H_403_67@*/

@H_403_67@SimplexmlElement::addChild(string$name[,string$vaule]);

@H_403_67@

@H_403_67@#添加完成后,要进行保存

@H_403_67@/**

@H_403_67@* @paramstring$filename保存的xml文件

@H_403_67@*/

@H_403_67@simpleXMLElement::asXML(string$filenmae);

xml属性查询

@H_403_67@/**

@H_403_67@*@paramstringattr_name添加属性的名字

@H_403_67@*/

@H_403_67@SimpleXMLElement::attributes()->attr_name;

xml属性添加

@H_403_67@/**

@H_403_67@* @paramstring$name添加属性

@H_403_67@* @paramstring$value属性

@H_403_67@*/

@H_403_67@smpleXMLElement::addtribute(string$name,[string$value[,string$namespace]]

Xpath查询xml数据

绝对路径

相对路径//

星号*查询指令

中括号表达式

@属性

猜你在找的XML相关文章