xml 知识点梳理 -- 整理自广州传智王老师
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):互斥元素,只能选一 定义属性基本语法: <!ATTLIST元素名称属性名称属性类型默认值> 属性类型 CDATA :字符或是数字(文本类型) (en1|en2|en....):枚举类型 ID :属性唯一 IDREF :引用已定义的ID属性 #REQUIRED :必填(默认值) #IMPLIED :可选 #FIXED :固定值 值 :直接使用默认值 定义实体引用实体 基本语法: <!ENTITY实体名称“实体的值”>
引用语法:[在xml中使用] &实体名;
参数实体[参数实体必须在外部DTD中定义,在外部dtd中使用] 基本语法: <!ENTITY%实体名称“实体的值”> 引用语法: %实体名; PHP解析XML数据PHPDOM模型解析XNLPHPDOM类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(‘元素名字’); 【4】获取节点名称为王大锤的name节点信息,所谓的点 $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要添加属性的名字 *@paramstring属性的值 */ setAttribute(string$name,string$value);
更新节点属性: /** *@paramstring要更新的属性的名字 *@paramstring属性的值 */ setAttribute(string$name,string$value);
移除指定节点的属性: /** *@paramstring要删除的属性名字 */ removerAttribute(string$name);
simpleXML解析XML读取xml数据基本语法: /* *@paramstring$filename要加载的xml文件名 */ simpleXMLElementsimplexml_load_file(string$filename);
/** *@paramstring$str已经定义好的xml字符内容 */ simpleXMLElementsimplexml_load_string(string$str);
查询xml数据通过children()方法获取xml数据
通过foreach()方法获取
通过$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$name要添加的属性名 * @paramstring$value属性值 */ smpleXMLElement::addtribute(string$name,[string$value[,string$namespace]] Xpath查询xml数据绝对路径相对路径//星号*查询指令中括号表达式@属性(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |