xml知识小结
xml的结构
文档声明:
元素:(标签 标记)
元素属性
一个元素可以有多个属性
属性值一定要用引号(单引号或双引号)引起来
属性名称的命名规范与元素的命名规范相同
元素中的属性是不允许重复的
标签属性所代表的信息也可以被改成用子元素的形式来描述
处理指令
必须以“”作为开头,以“?>”作为结尾
xml指令
xml-stylesheet指令
例:
注释:
注释可以在浏览器中显示
XML声明之前不能有注释,注释不能嵌套
CDATA区段
语法:
内容
]]>
xml DTD 文档约束
约束文档定义了xml允许出现的元素名称 、属性 、 以及元素出现顺序等
DTD 约束文档分类
内部 DTD
nbsp;根元素 [
DTD 约束
]>
外部DTD
nbsp;根元素 SYSTEM “外部DTD 的路径”>
公用DTD
nbsp;根元素 PUBLIC “DTD标识名” “公用DTD的URI”>
DTD约束编写
定义元素(标记或是标记)
元素名 元素类型>
元素类型
(#PCDATA) :该类型包含任何字符数据,不能含有子元素
EMPTY: 该类型不能含有子元素或是文本,可以有属性
ANY : 该元素包含所以内容(适用于根元素)
(子元素) :定义子元素只能出现一次
(子元素1,子元素2, ...) : 元素按规定的 名称及 顺序出现
(子元素+) : 当前元素出现 1+ 次
(子元素*) : 当前元素出现 0+ 次
(子元素?) : 当前元素查询 0 或 1 次
(子元素1 | 子元素2 ) : 互斥元素 ,只能选一
定义属性
基本语法:
元素名称 属性名称 属性类型 默认值 >
属性类型
CDATA :字符或是数字(文本类型)
(en1|en2|en....) :枚举类型
ID : 属性唯一
IDREF :引用已定义的ID属性
#REQUIRED :必填 (默认值)
#IMPLIED :可选
#FIXED :固定值
值 :直接使用默认值
定义实体
引用实体
基本语法:
实体名称 “实体的值”>
引用语法: [在xml中使用]
&实体名;
参数实体 [参数实体必须在外部DTD中定义,在外部dtd中使用]
基本语法:
实体名称 “实体的值”>
引用语法:
%实体名;
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教程有兴趣的朋友有所帮助。