码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2015-04-04 21:18:30      阅读:183      评论:0      收藏:0      [点我收藏+]

标签:php   xml   dom   

xml知识小结

xml的结构

文档声明:

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

 

元素:(标签 标记)

 

元素属性

一个元素可以有多个属性

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

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

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

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

 

处理指令

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

xml指令

xml-stylesheet指令

 

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

 

 

注释:

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

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

 

CDATA区段

语法:

<![CDATA[

内容

]]>

 

xml DTD 文档约束

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

 

DTD 约束文档分类

内部 DTD

<!DOCTYPE 根元素 [

DTD 约束

]>

外部DTD

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

 

公用DTD

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

 

DTD约束编写

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

<!ELEMENT   元素名  元素类型>

元素类型

 

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

 

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

 

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

 

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

 

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

 

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

 

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

 

(子元素?: 当前元素查询 或 

 

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

 

 

定义属性

基本语法:

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

 

属性类型

 

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

 

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

 

ID : 属性唯一

 

IDREF :引用已定义的ID属性

 

#REQUIRED      :必填 (默认值)

 

#IMPLIED :可选

 

#FIXED :固定值

 

值 :直接使用默认值

 

定义实体

引用实体

 

基本语法:

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

 

引用语法: [xml中使用]

&实体名;

 

 

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

 

基本语法:

 

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

 

引用语法:

%实体名;

 

 

PHP解析 XML 数据

PHP DOM 模型解析 XNL

PHP DOM  

DOMDocument  :  文档类

DOMNodeList   :  节点列表类

DOMNode    :   节点类

DOMElement    :  节点类

DOMDocument类:

基本语法:

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

 

load 方法的使用

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

 

 

item方法的使用:

domdocument_obj -> item(int index );

 

案例:PHP DOM查询操作

 

1】开辟内存空间形成

$dom = new DOMDocument(‘1.0’,’utf-8’);

 

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

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

 

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

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

 

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

$name = $names -> nodeValue;

 

以上代码简化:

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

 

PHP DOM 属性操作

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

bool DOMElement::hasAttribute(string $name);

 

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

bool DOMNode:: hasAttributes(void);

 

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

string  DOMElement::getAttribute(string $name);

 

 

 

PHP DOM 的增删改查操作

PHP DOM 增操作:

创建新节点的方法:

DOMDocument :: createElement(string name [ ] );

 

追加新节点:

DOMDocument :: appendChild( DOMNode $newnode);

 

保存操作:

DOMDocument :: saveXML( filename);

 

PHP DOM 删操作:

移除节点操作:

DOMNode :: removeChild( DOMNode $nodeName ) ;

 

 

 

PHP DOM 改操作:

更新节点操作:

/**

*@param    string   $newNode    更新的节点

*   @param    string   $oldNode    旧的节点

*/

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

 

 

PHP DOM  属性操作:

为节点添加属性:

/**

*@param   string    要添加属性的名字

*   @param   string    属性的值

*/

setAttribute(string $name  , string $value );

 

更新节点属性:

/**

*@param   string    要更新的属性的名字

*   @param   string    属性的值

*/

setAttribute ( string $name , string $value ) ;

 

移除指定节点的属性:

/**

*@param   string    要删除的属性名字

*/

removerAttribute( string $name );

 

 

simpleXML 解析XML

读取xml数据

基本语法:

/*

* @param    string     $filename    要加载的xml 文件名

*/

simpleXMLElement simplexml_load_file(string $filename) ;

 

 

/**

*@param   string   $str     已经定义好的xml字符内容

*/

simpleXMLElement simplexml_load_string(string  $str ) ;

 

 

查询xml数据

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

 

通过foreach() 方法获取

 

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

 

xml 元素的添加

 

/**

* @param  string $name    有添加的元素的名字

*  @param  string  $value  设置值

*/

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

 

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

/**

* @param   string    $filename 保存的xml文件名

*/

simpleXMLElement :: asXML(string $filenmae );

 

 

xml 属性的查询

 

/**

* @param  string    attr_name   一添加的属性的名字

*/

SimpleXMLElement :: attributes()->attr_name;

 

xml 属性的添加

/**

* @param string   $name   要添加的属性名

* @param string   $value  属性值

*/

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

 

 

 

Xpath 查询xml数据

绝对路径

 

相对路径  //

 

星号 查询指令

 

中括号表达式

 

@属性

 

 

 

 

 

 

 

 

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

标签:php   xml   dom   

原文地址:http://blog.csdn.net/u010657348/article/details/44875647

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!