xml知识小结
xml的结构
文档声明:
<?xmlversion=’1.0’encoding=’utf-8’?>
元素:(标签标记)
元素属性
一个元素可以有多个属性
属性值一定要用引号(单引号或双引号)引起来
元素中的属性是不允许重复的
处理指令
必须以“<?”作为开头,以“?>”作为结尾
xml指令
xml-stylesheet指令
例:<?xml-stylesheettype="text/css“href=“style.css"?>
注释:
<!--这是注释-->注释可以在浏览器中显示
XML声明之前不能有注释,注释不能嵌套
CDATA区段
语法:
<![CDATA[
]]>
xmlDTD文档约束
约束文档定义了xml允许出现的元素名称、属性、以及元素出现顺序等
DTD约束文档分类
内部DTD
<!DOCTYPE根元素[
DTD约束
]>
外部DTD
<!DOCTYPE根元素SYSTEM“外部DTD的路径”>
公用DTD
<!DOCTYPE根元素PUBLIC“DTD标识名”“公用DTD的URI”>
DTD约束编写
定义元素(标记或是标记)
<!ELEMENT元素名元素类型>
元素类型
(#PCDATA):该类型包含任何字符数据,不能含有子元素
EMPTY:该类型不能含有子元素或是文本,可以有属性
ANY: 该元素包含所以内容(适用于根元素)
(子元素):定义子元素只能出现一次
(子元素1,子元素2,...):元素按规定的名称及顺序出现
(子元素+):当前元素出现1+次
(子元素*):当前元素出现0+次
(子元素?):当前元素查询0或1次
(子元素1|子元素2):互斥元素,只能选一
定义属性
基本语法:
属性类型
CDATA :字符或是数字(文本类型)
(en1|en2|en....):枚举类型
ID :属性唯一
IDREF :引用已定义的ID属性
#required :必填(默认值)
#IMPLIED :可选
#FIXED :固定值
值 :直接使用默认值
定义实体
引用实体
基本语法:
<!ENTITY实体名称“实体的值”>
引用语法:[在xml中使用]
&实体名;
参数实体[参数实体必须在外部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】开辟内存空间形成”面”
$dom=newDOMDocument(‘1.0’,’utf-8’);
【2】载入xml文件到内存,形成dom树
$dom->load(‘test.xml’);
【3】获取同级兄弟节点,形成串
$names=$dom->getElementsByTagName(‘元素名字’);
$name=$names->nodeValue;
以上代码简化:
$dom->getElementsByTageName(‘name’)->item(0)->nodeValue;
PHPDOM属性操作
#判断某个节点是否具有指定的属性
boolDOMElement::hasAttribute(string$name);
#判断某个节点是否有指定的属性
boolDOMNode::hasAttributes(void);
stringDOMElement::getAttribute(string$name);
PHPDOM的增删改查操作
PHPDOM增操作:
创建新节点的方法:
DOMDocument::createElement(stringname[]);
追加新节点:
DOMDocument::appendChild(DOMNode$newnode);
保存操作:
DOMDocument::saveXML(filename);
PHPDOM删操作:
移除节点操作:
DOMNode::removeChild(DOMNode$nodeName);
PHPDOM改操作:
更新节点操作:
/**
*@paramstring$newNode更新的节点
*@paramstring$oldNode旧的节点
*/
DOMNode::replaceChild(DOMNode$newNode,DOMNode$oldNode);
PHPDOM属性操作:
/**
*@paramstring属性的值
*/
setAttribute(string$name,string$value);
更新节点属性:
/**
*@paramstring要更新的属性的名字
*@paramstring属性的值
*/
setAttribute(string$name,string$value);
移除指定节点的属性:
/**
*/
removerAttribute(string$name);
simpleXML解析XML
读取xml数据
基本语法:
/*
*@paramstring$filename要加载的xml文件名
*/
simpleXMLElementsimplexml_load_file(string$filename);
/**
*@paramstring$str已经定义好的xml字符内容
*/
simpleXMLElementsimplexml_load_string(string$str);
查询xml数据
通过$xml->result[0]->nodeName直接获取
xml元素的添加
/**
* @paramstring$name有添加的元素的名字
* @paramstring$value设置值
*/
SimplexmlElement::addChild(string$name[,string$vaule]);
#添加完成后,要进行保存
/**
* @paramstring$filename保存的xml文件名
*/
simpleXMLElement::asXML(string$filenmae);
xml属性的查询
/**
*@paramstringattr_name一添加的属性的名字
*/
SimpleXMLElement::attributes()->attr_name;
xml属性的添加
/**
* @paramstring$value属性值
*/
smpleXMLElement::addtribute(string$name,[string$value[,string$namespace]]