欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    PHP与XML.ppt

    • 资源ID:82769151       资源大小:538.50KB        全文页数:63页
    • 资源格式: PPT        下载积分:16金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要16金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    PHP与XML.ppt

    第15章 PHP与XML n n15-1 XML与PHP的基础n n15-2 PHP与DOMn n15-3 PHP与XPathn n15-4 PHP与SAXn n15-5 使用XSLT输出HTML文件n n15-6 SimpleXML15-1 XML与PHP的基础-说明n nXML程序设计就是设计应用程序来存取XML文件的架构与内容。n n程序使用XML剖析器(XML Parsers)来分析XML文件架构,以便XML应用程序可以存取XML架构和内容。15-1 XML与PHP的基础-剖析器种类n n树状基础的剖析器(树状基础的剖析器(树状基础的剖析器(树状基础的剖析器(Tree-based ParserTree-based ParserTree-based ParserTree-based Parser):):):):将将XMLXML文件转换成树状结构,剖析器需要分析完整份文件转换成树状结构,剖析器需要分析完整份XMLXML文件后,才能建立树状结构,提供相关界面物文件后,才能建立树状结构,提供相关界面物件来存取树状结构的节点,例如:第件来存取树状结构的节点,例如:第15-215-2节的节的DOMDOM(Document Object ModelDocument Object Model)。)。n n事件基础的剖析器(事件基础的剖析器(事件基础的剖析器(事件基础的剖析器(Event-based ParserEvent-based ParserEvent-based ParserEvent-based Parser):):):):XMLXML文件的处理如同读取文字档案的过程,在读取内文件的处理如同读取文字档案的过程,在读取内容时触发一系列事件,应用程序提供函数处理这容时触发一系列事件,应用程序提供函数处理这些事件,以便存取些事件,以便存取XMLXML内容,例如:第内容,例如:第15-415-4节的节的SAXSAX(Simple API for XMLSimple API for XML)。)。15-1 XML与PHP的基础-PHP 5与XMLn nPHP 4的DOM并不是W3C标准的DOM界面物件,再加上执行效能不佳和多种扩充程序之间的沟通问题。n nPHP 5的XML功能已经全部使用libxml2函式库来改写DOM、SAX和XSLT,支援W3C标准的DOM界面物件和XPath,新增SimpleXML扩充功能,可以使用一种更简单的方式来存取XML文件。15-2 PHP与DOMn n15-2-1 DOM的基础n n15-2-2 载入与验证XML文件n n15-2-3 存取DOM的XML元素和属性n n15-2-4 在DOM走访与浏览XML元素n n15-2-5 新增XML元素和属性n n15-2-6 删除XML元素和属性15-2-1 DOM的基础-说明n nDOMDOM(Document Object ModelDocument Object Model)物件模)物件模型可以将型可以将XMLXML文件转换成一棵节点(文件转换成一棵节点(NodesNodes)组)组成的树状结构,提供节点的相关属性和方法,存成的树状结构,提供节点的相关属性和方法,存取元素内容,或新增、删除和修改节点内容。取元素内容,或新增、删除和修改节点内容。n nDOMDOM属于属于XMLXML文件程序设计的标准界面物件,可文件程序设计的标准界面物件,可以将以将XMLXML文件视为树状结构的节点。文件视为树状结构的节点。n nDOMDOM是是W3CW3C的建议规格,提供各种程序语言标的建议规格,提供各种程序语言标准程序设计界面的属性、方法和物件,程序设计准程序设计界面的属性、方法和物件,程序设计者能够透过者能够透过DOMDOM浏览浏览XMLXML文件、新增、删除和修文件、新增、删除和修改节点资料。改节点资料。15-2-1 DOM的基础-特点n nDOM Level 1在1998年10月1日成为W3C的标准建议规格,DOM Level 2是2000年11月,其特点如下所示:DOMDOM支援支援JavsScriptJavsScript、VBScriptVBScript、PerlPerl、Visual BasicVisual Basic、DelphiDelphi、C+C+、PHPPHP和和JavaJava等程序语言。等程序语言。DOMDOM可以建立与平台和语言无关的资料架构,可以建立与平台和语言无关的资料架构,将将HTMLHTML或或XMLXML文件都使用标准的文件都使用标准的DOMDOM节点来节点来表示。表示。DOMDOM支援支援DTDDTD、XML SchemaXML Schema等等XMLXML文件验文件验证。证。15-2-1 DOM的基础-DOM界面物件n nPHPPHP程序在使用程序在使用XMLXML剖析器载入剖析器载入XMLXML文件后,就文件后,就可以使用可以使用DOMDOM界面(界面(InterfaceInterface)物件处理)物件处理XMLXML文件的元素和属性,将文件的元素和属性,将XMLXML文件内容视为树文件内容视为树状结构的节点,主要的界面物件,如下表所示:状结构的节点,主要的界面物件,如下表所示:15-2-1 DOM的基础-DOM节点的树状结构n nXML剖析器在载入XML文件后,DOM将XML文件的元素视为树状结构的节点,常见节点类型的XML常数,如下表所示:15-2-1 DOM的基础-DOM节点的树状结构(图例)15-2-2 载入与验证XML文件-说明n n对于PHP的XML剖析器来说,XML文件在转换成树状结构之后,就是一个DOMDocument物件,由各种DOMNode节点物件组合成的一个物件集合。15-2-2 载入与验证XML文件-载入XML文件n n在PHP程序载入XML文件是使用DOMDocument物件的方法。首先建立DOMDocument物件,如下所示:$dom=new DOMDocument();n n在设定剖析器的相关参数后,就可以载入XML文件,如下所示:$doc-preserveWhiteSpace=false;if($dom-load(book.xml)15-2-2 载入与验证XML文件-DOMDocuement物件属性n nDOMDocuement物件提供相关属性设定剖析器参数,如下表所示:15-2-2 载入与验证XML文件-验证XML文件(说明)n nXML提供文件验证机制来检查XML文件是否符合自行定义的结构、标签和属性规则,常用的验证方式有两种,如下所示:DTDDTD:DTDDTD原来是原来是SGMLSGML的语法检查,的语法检查,XML XML 1.01.0版支援版支援DTDDTD验证方式,验证方式,DTDDTD定义的规则可定义的规则可以帮助以帮助XMLXML剖析器检查剖析器检查XMLXML文件的内容。文件的内容。XML SchemaXML Schema:XML SchemaXML Schema是是W3CW3C的标的标准规格,准规格,XML SchemaXML Schema拥有很高的扩充性,可拥有很高的扩充性,可以直接扩充别人现成定义的以直接扩充别人现成定义的XML SchemaXML Schema来验来验证证XMLXML文件。文件。15-2-2 载入与验证XML文件-验证XML文件(实作)n n在PHP程序验证XML文件是呼叫validate()和schemaValidate()方法,如下所示:$dom-validate();$dom-schemaValidate(book.xsd);n n上述validate()方法是DTD验证,schemaValidate()方法是XML Schema验证,参数是XML Schema文件,验证成功传回true,错误传回false。15-2-3 存取DOM的XML元素和属性-DOMDocument文件物件n nXMLXML文件树状结构是文件树状结构是DOMDocumentDOMDocument物件,当物件,当DOMDOM载入载入XMLXML文件建立文件建立$dom$dom物件后,就可以使物件后,就可以使用属性取得用属性取得XMLXML文件的根节点,如下所示:文件的根节点,如下所示:$root=$dom-documentElement;$root=$dom-documentElement;n ndocumentElementdocumentElement属性是属性是XMLXML文件的根节点。文件的根节点。DOMDocumentDOMDocument物件提供方法可以直接使用标签物件提供方法可以直接使用标签名称取得指定节点和其子节点,如下所示:名称取得指定节点和其子节点,如下所示:$nodes=$dom-getElementsByTagName($nodes=$dom-getElementsByTagName(book);book);n n上述指令取得所有上述指令取得所有标签的子节点,取出标签的子节点,取出的节点集合是的节点集合是DOMNodeListDOMNodeList物件。物件。15-2-3 存取DOM的XML元素和属性-DOMNode节点物件n nDOMDocumentDOMDocument物件是由物件是由DOMNodeDOMNode节点物件所节点物件所组成,在组成,在DOMNodeDOMNode物件提供相关属性和方法可物件提供相关属性和方法可以取得以取得XMLXML元素的名称和内容,如下所示:元素的名称和内容,如下所示:$root=$dom-documentElement;$root=$dom-documentElement;echo echo 根元素根元素:.$root-:.$root-nodeName.;nodeName.;n nnodeNamenodeName属性可以取得节点名称。属性可以取得节点名称。DOMNodeDOMNode物件提供物件提供childNodeschildNodes属性取得这些子节点的属性取得这些子节点的DOMNodeListDOMNodeList物件,如下所示:物件,如下所示:$nodes=$root-childNodes;$nodes=$root-childNodes;15-2-3 存取DOM的XML元素和属性-DOMNode节点物件属性n nDOMNode节点物件的相关属性说明,如下表所示:15-2-3 存取DOM的XML元素和属性-取得节点名称和值n n例如:取得根节点的节点名称和值,如下所示:例如:取得根节点的节点名称和值,如下所示:$root-nodeName;$root-nodeName;iconv(utf-8,big5,$root-nodeValue);iconv(utf-8,big5,$root-nodeValue);n n程序码取得根节点的名称和值,属性值需要使用程序码取得根节点的名称和值,属性值需要使用iconviconv()()函数,将函数,将utf-8utf-8的编码转换成的编码转换成big5big5编码。编码。n n因为因为DOMNodeDOMNode节点物件还能拥有其他子节点,节点物件还能拥有其他子节点,所以所以DOMNodeDOMNode节点物件提供节点物件提供hasChildNodes()hasChildNodes()方法检查节点是否拥有子节点,如下所示:方法检查节点是否拥有子节点,如下所示:if($node-hasChildNodes().if($node-hasChildNodes().15-2-3 存取DOM的XML元素和属性-节点种类n nnodeType节点属性值是前述的XML常数,不同节点种类影响相关的属性值,常见的节点种类如下表所示:15-2-3 存取DOM的XML元素和属性-DOMElement元素物件n nDOMElementDOMElement物件代表树状结构的物件代表树状结构的XMLXML元素节点,元素节点,这也是一种这也是一种DOMNodeDOMNode物件,如果元素拥有内容,物件,如果元素拥有内容,文字内容是文字内容是DOMTextDOMText节点,节点,DOMElementDOMElement物件物件的属性的属性tagNametagName可以取得标签名称,如下所示:可以取得标签名称,如下所示:$eles=$dom-getElementsByTagName($eles=$dom-getElementsByTagName(book);book);foreach($eles as$ele)foreach($eles as$ele)echo$ele-tagName.;echo$ele-tagName.;n n程序码在取得程序码在取得bookbook所有所有DOMElementDOMElement元素物件元素物件后,使用后,使用foreachforeach循环和循环和tagNametagName属性取得标签属性取得标签名称。名称。15-2-3 存取DOM的XML元素和属性-DOMElement元素属性n n如果如果DOMElementDOMElement元素拥有属性,我们可以呼叫元素拥有属性,我们可以呼叫hasAttributeshasAttributes()()方法检查是否有属性,方法检查是否有属性,getAttribute()getAttribute()方法取方法取得得XMLXML元素的属性值,如下所示:元素的属性值,如下所示:if($ele-hasAttributes()if($ele-hasAttributes()echo sales echo sales属性值属性值:.:.$ele-getAttribute(sales).-;$ele-getAttribute(sales).-;n nif if条件判断是否有属性,如果有,就可以取得元素条件判断是否有属性,如果有,就可以取得元素指定的指定的salessales属性值。属性值。15-2-3 存取DOM的XML元素和属性-DOMText内容节点物件n nDOMText物件指的是XML元素的文字内容。15-2-3 存取DOM的XML元素和属性-DOMNamedNodeMap属性清单物件n nXMLXML元素可能拥有多个属性,元素可能拥有多个属性,PHPPHP程序可以使用程序可以使用DOMElementDOMElement物件的物件的attributesattributes属性取得所有属属性取得所有属性的性的DOMNamedNodeMapDOMNamedNodeMap物件,如下所示:物件,如下所示:$atts=$node-attributes;$atts=$node-attributes;foreach($atts as$att)foreach($atts as$att)$v=iconv(utf-8,big5,$att-$v=iconv(utf-8,big5,$att-nodeValue);nodeValue);echo(.$att-NodeName./.echo(.$att-NodeName./.$v.);$v.);n n上述程序码在使用上述程序码在使用attributesattributes属性取得属性清单属性取得属性清单后,使用后,使用foreachforeach循环取得所有属性名称和值。循环取得所有属性名称和值。15-2-4 在DOM走访与浏览XML元素-说明n nDOMNodeDOMNode节点物件提供多种属性,可以在节点物件提供多种属性,可以在DOMDOM树状节点中,走访与浏览指定树状节点中,走访与浏览指定XMLXML元素,如下:元素,如下:$node=$node=$root-firstChild-nextSibling-firstChild;$root-firstChild-nextSibling-firstChild;echo$node-nodeName./.echo$node-nodeName./.$node-nodeValue.;$node-nodeValue.;n n程序码取得根节点程序码取得根节点$root$root后,使用后,使用firstChildfirstChild属性属性走到下一层的第走到下一层的第1 1个个bookbook元素,元素,nextSiblingnextSibling属性属性走到第走到第2 2个个bookbook元素,再一次元素,再一次firstChildfirstChild属性,就属性,就是走到第是走到第2 2个个bookbook元素的第元素的第1 1个个codecode子元素,也子元素,也就是第就是第2 2个个codecode元素。元素。15-2-4 在DOM走访与浏览XML元素-相关属性n nDOMNode节点物件关于走访与浏览XML文件的相关属性说明,如下表所示:15-2-5 新增XML元素和属性-步骤一:建立节点物件(方法)n n在新增XML元素和属性前,我们需要使用DOMDocument物件方法建立所需的节点物件,常用方法如下表所示:15-2-5 新增XML元素和属性-步骤一:建立节点物件(范例)n n例如:在PHP程序建立price节点物件,如下所示:$price=$dom-createElement(price);$price=$dom-createElement(price);n n在建立price节点$price后,我们还需要建立标签内容的文字节点$text,如下所示:$text=$dom-createTextNode(580);$text=$dom-createTextNode(580);15-2-5 新增XML元素和属性-步骤二:新增元素的内容(方法)n n在建立好节点物件后,就可以使用DOMNode节点方法将节点新增到树状结构之中,相关方法的说明,如下表所示:15-2-5 新增XML元素和属性-步骤二:新增元素的内容(范例)n n所谓新增元素的内容,就是新增文字子节点。例如:将$text文字节点新增成为$price节点的子节点,如下所示:$price-appendChild($text);n n上述程序码可以将$price节点建立成完整580的price元素。15-2-5 新增XML元素和属性-步骤三:将节点新增或插入指定位置n n现在我们可以将price元素新增成为树状结构的节点,如下所示:$root=$dom-documentElement;$root=$dom-documentElement;$root-appendChild($price);$root-appendChild($price);n n上述程序码是将$price节点新增成为根节点的最后一个子节点,insertBefore()方法可以将节点插入指定节点之前。15-2-5 新增XML元素和属性-步骤四:新增元素的属性n n节点如果拥有属性,DOMElement物件可以使用setAttribute()方法建立属性,如下所示:$node=$root-firstChild-nextSibling;$node=$root-firstChild-nextSibling;$node-setAttribute(sales,Y);$node-setAttribute(sales,Y);n n上述setAttribute()方法的第1个参数为属性名称,第2个参数是属性值,程序码指定根节点下第2个子节点的属性sales值为Y。15-2-6 删除XML元素和属性-说明n n在XML文件删除节点或属性可以使用DOMNode节点的removeChild()方法删除节点,DOMElement物件的removeAttribute()方法删除属性。15-2-6 删除XML元素和属性-说明n n例如:在载入的例如:在载入的XMLXML文件删除文件删除authorauthor节点,如下节点,如下所示:所示:$root=$dom-documentElement;$root=$dom-documentElement;$root-removeChild($root-removeChild($root-lastChild-previousSibling);$root-lastChild-previousSibling);n n程序码呼叫程序码呼叫removeChild()removeChild()方法删除第方法删除第1 1个个authorauthor节点,使用浏览方式找到此节点。同样方节点,使用浏览方式找到此节点。同样方式,我们可以删除式,我们可以删除codecode节点的节点的salessales属性,如下属性,如下所示:所示:$root-firstChild-$root-firstChild-removeAttribute(sales);removeAttribute(sales);n n上述程序码在取得根节点的第上述程序码在取得根节点的第1 1个子节点后,删除个子节点后,删除节点的属性节点的属性salessales。15-3 PHP与XPath-说明n nXPathXPath(XML Path LanguageXML Path Language)是一种标示节)是一种标示节点位置的语言,可以用来描述点位置的语言,可以用来描述XMLXML元素的位置,元素的位置,如同硬盘资料夹的档案路径,如下所示:如同硬盘资料夹的档案路径,如下所示:C:wampwwwCh15book.xmlC:wampwwwCh15book.xmln n上述路径指出档案上述路径指出档案book.xmlbook.xml的位置,的位置,XPathXPath指令指令可以指出可以指出XMLXML元素在元素在XMLXML文件中的位置,也就是文件中的位置,也就是树状结构的节点位置。树状结构的节点位置。n nXPathXPath语言的主要目的是描述节点相对其他节点语言的主要目的是描述节点相对其他节点的位置,可以取得所有符合条件的节点,称为的位置,可以取得所有符合条件的节点,称为位置路径(位置路径(Location PathLocation Path)。)。15-3 PHP与XPath-运算子n n位置路径的运算子,如下表所示:15-3 PHP与XPath-范例15-3 PHP与XPath-实作n nPHPPHP程序在载入程序在载入XMLXML文件建立文件建立DOMDocumentDOMDocument物物件后,就可以建立件后,就可以建立DOMXPathDOMXPath物件,如下所示:物件,如下所示:$xp=new DOMXPath($dom);$xp=new DOMXPath($dom);n n程序码的建构子参数是程序码的建构子参数是DOMDocumentDOMDocument物件。在物件。在建立好建立好DOMXPathDOMXPath物件物件$xp$xp后,就可以呼叫后,就可以呼叫queryquery()()方法找出方法找出XPathXPath位置路经表达式的节点资料,位置路经表达式的节点资料,如下所示:如下所示:$items=$xp-query($xpath);$items=$xp-query($xpath);n n上述上述query()query()方法的参数是方法的参数是XPathXPath表达式,传回表达式,传回DOMNodeListDOMNodeList物件,如果没有找到节点,就传物件,如果没有找到节点,就传回空的回空的DOMNodeListDOMNodeList物件。物件。15-4 PHP与SAXn n15-4-1 SAX的基础n n15-4-2 建立PHP的SAX应用程序15-4-1 SAX的基础-什么是SAX 2n nSAX 2SAX 2是是Simple API for XML version 2Simple API for XML version 2,也就,也就是是SAXSAX版本版本2 2。SAXSAX是一组程序界面,可以将是一组程序界面,可以将XMLXML文件视为文字串流的资料,在读取文件视为文字串流的资料,在读取XMLXML元素元素时触发一系列事件,只需撰写所需的事件处理程时触发一系列事件,只需撰写所需的事件处理程序,就可以分析或取得序,就可以分析或取得XMLXML元素。元素。n nSAXSAX技术是一种开放标准,由技术是一种开放标准,由XML-DEVXML-DEV电子报的电子报的一组开发人员进行规格的开发,其网址如下所示:一组开发人员进行规格的开发,其网址如下所示:http:/www.xml.org/xml/xmldev.shtmlhttp:/www.xml.org/xml/xmldev.shtmln n整个整个SAXSAX技术的开发由技术的开发由David MegginsonDavid Megginson主导,主导,主要主要XMLXML剖析器都同时支援剖析器都同时支援DOMDOM和和SAXSAX两种技术,两种技术,SAXSAX规格资料可以在官方网站取得,其网址如下规格资料可以在官方网站取得,其网址如下所示:所示:http:/www.saxproject.org/http:/www.saxproject.org/15-4-1 SAX的基础-SAX是如何剖析XML文件(说明)n n接着我们来看看接着我们来看看SAXSAX到底是如何剖析到底是如何剖析XMLXML文件。文件。例如:剖析下列例如:剖析下列XMLXML文件,如下所示:文件,如下所示:大家好!大家好!Say Hello Say Hello!n n当使用当使用SAXSAX载入载入XMLXML文件,其操作如同开启循文件,其操作如同开启循序档案(序档案(Sequential FileSequential File),将),将XMLXML元素和内元素和内容视为文字档案的字符一一读入,在读到容视为文字档案的字符一一读入,在读到XMLXML元元素的开始标签、结尾标签和内容时,将产生一序素的开始标签、结尾标签和内容时,将产生一序列事件,如下所示:列事件,如下所示:startElementstartElement、characterscharacters、endElementendElement15-4-1 SAX的基础-SAX是如何剖析XML文件(过程)n nSAX读入的资料如同一个文字流,如下所示:大家好!大家好!Say Hello Say Hello!n n上述循序读取的资料是括起的根元素和子元素,在读取时依序产生上述事件,只需撰写各事件处理程序,在读取XML文件时就可以取得指定的XML元素。15-4-2 建立PHP的SAX应用程序-说明n nPHP的SAX从PHP 3.0版就开始支援,新版5.0的SAX API并没有改变,只是由Expat函式库改为使用libxml2来实作。换句话说,PHP 3或4旧版撰写的SAX应用程序,在新版5.0仍然可以正确的执行。n nSAX是一种事件基础的剖析器(Event-based Parser),以资料角度来检视XML文件,而不是使用DOM的树状结构。15-4-2 建立PHP的SAX应用程序-建立SAX剖析器n n在PHP程序建立SAX应用程序需要先建立SAX剖析器,如下所示:$parser=xml_parser_create();n n上述程序码呼叫xml_parser_create()函数建立SAX剖析器,传回资源(Resource)资料型态的变量,即资源变量$parser。15-4-2 建立PHP的SAX应用程序-指定事件处理函数(说明)n n在剖析在剖析XMLXML文件前,文件前,PHPPHP程序需要指定各种事件程序需要指定各种事件的处理函数,相关函数的说明,如下表所示:的处理函数,相关函数的说明,如下表所示:15-4-2 建立PHP的SAX应用程序-指定事件处理函数(实作)n n在在PHPPHP程序指定处理开始和结尾标签的事件处理程序指定处理开始和结尾标签的事件处理函数,如下所示:函数,如下所示:xml_set_element_handler($parser,xml_set_element_handler($parser,startElement,endElement);startElement,endElement);n n程序码指定处理开始标签的事件处理函数是程序码指定处理开始标签的事件处理函数是startElementstartElement()()函数和结尾标签是函数和结尾标签是endElement()endElement()函数,如下函数,如下所示:所示:function startElement($parser,$name,$attrs)function startElement($parser,$name,$attrs)function endElement($parser,$name)function endElement($parser,$name)15-4-2 建立PHP的SAX应用程序-开启XML文件n nPHP程序在建立好SAX剖析器且指定好事件处理函数后,就可以直接使用档案处理函数开启XML文件,然后读取内容送给SAX剖析器进行处理,如下所示:$fp=fopen($file,r)$fp=fopen($file,r)or exit(or exit(档案档案$file$file 开启错误开启错误););15-4-2 建立PHP的SAX应用程序-执行SAX剖析while($data=fread($fp,4096)while($data=fread($fp,4096)if(!xml_parse($parser,$data,feof($fp)if(!xml_parse($parser,$data,feof($fp)$error_code=$error_code=xml_get_error_code($parser);xml_get_error_code($parser);$error_text=$error_text=xml_error_string($error_code);xml_error_string($error_code);$error_line=$error_line=xml_get_current_line_number($parser);xml_get_current_line_number($parser);exit(exit(剖析错误剖析错误$error_line:$error_text);$error_line:$error_text);15-4-2 建立PHP的SAX应用程序-错误处理函数n n函数xml_parse()剖析成功传回true,失败传回false。如果剖析失败,可以进一步呼叫下列函数取得错误信息,如下表所示:15-4-2 建立PHP的SAX应用程序-释放SAX剖析器的资源n n最后,PHP程序需要呼叫xml_parser_free()函数来释放SAX剖析器占用的资源,如下所示:xml_parser_free($parser);xml_parser_free($parser);15-5 使用XSLT输出HTML文件-启用PHP的ext/xsl扩充程序n nXML文件可以使用XSLT Script转换成其他文件内容,例如:PHP程序可以使用XSLT Script将XML文件输出成HTML文件。n nPHP 5预设安装libxslt函式库实作的ext/xsl扩充程序,不过,WAMP5预设并没有启用此功能,请开启php.ini的PHP设定档n n取消之前的;号启用扩充程序,如下所示:extension=php_xsl.dll15-5 使用XSLT输出HTML文件-载入XML和XSLT Script文件档案n n在在PHPPHP程序执行程序执行XSLTXSLT转换,首先需要载入转换,首先需要载入XMLXML和和XSLT ScriptXSLT Script文件档案成为文件档案成为DOMDocumentDOMDocument物件,物件,如下所示:如下所示:$dom=new DOMDocument();$dom=new DOMDocument();$dom-load(book.xml);$dom-load(book.xml);$xsl=new DOMDocument();$xsl=new DOMDocument();$xsl-load(book.xslt);$xsl-load(book.xslt);n n上述程序码载入上述程序码载入book.xmlbook.xml和和book.xsltbook.xslt,book.xsltbook.xslt可以将可以将bookbook标签的子标签一一取出,标签的子标签一一取出,以以HTMLHTML表格显示每一本书的图书资料。表格显示每一本书的图书资料。15-5 使用XSLT输出HTML文件-建立XSLT处理器物件n n在建立DOMDocument物件后,就可以建立XSLT处理器物件,如下所示:$proc=new XSLTProcessor();$proc=new XSLTProcessor();$proc-importStylesheet($xsl);$proc-importStylesheet($xsl);n n上述程序码建立XSLTProcessor物件$proc后,呼叫importStylesheet()方法载入XSLT Script文件物件$xsl到XSLT处理器。15-5 使用XSLT输出HTML文件-建立XSLT处理器物件n n接着呼叫接着呼叫transformToXML()transformToXML()方法将方法将XMLXML文件使文件使用用XSLT ScriptXSLT Script来执行转换,如下所示:来执行转换,如下所示:if($html=$proc-transformToXML($dom)if($html=$proc-transformToXML($dom)echo iconv(utf-8,big5,$html);echo iconv(utf-8,big5,$html);elseelse echo XSLT echo XSLT输出输出HTMLHTML文件失败文件失败.;.;n n上述程序码可以将上述程序码可以将XMLXML文件转换成文件转换成HTMLHTML标签的标签的字符串,在转换编码后,就可以显示字符串,在转换编码后,就可以显示HTMLHTML文件,文件,转换失败传回转换失败传回falsefalse。15-5 使用XSLT输出HTML文件-XSLTProcessor物件方法n nXSLTProcessor物件的相关方法说明,如下表所示:15-6 SimpleXMLn n15-6-1 使用SimpleXML载入XML文件n n15-6-2 使用XPath查询XML文件15-6-1 使用SimpleXML载入XML文件-载入XML文件n nPHP 5PHP 5的的SimpleXMLSimpleXML可以将可以将XMLXML文件的元素都转文件的元素都转换成物件,相同子元素转换成物件阵列,让我们换成物件,相同子元素转换成物件阵列,让我们在在PHPPHP程序直接使用程序直接使用foreachforeach指令和阵列索引方指令和阵列索引方式来取得指定元素的名称、内容和属性值。式来取得指定元素的名称、内容和属性值。n nPHPPHP程序是呼叫程序是呼叫simplexml_load_file()simplexml_load_file()函数来函数来载入载入XMLXML文件档案,如下所示:文件档案,如下所示:$library=simplexml_load_file(book.xml);$library=simplexml_load_file(book.xml);n n上述程序码载入上述程序码载入XMLXML文件档案文件档案book.xmlbook.xml,函数,函数传回传回SimpleXMLElementSimpleXMLElement类别的物件,载入失败类别的物件,载入失败传回传回falsefalse。15-6-1 使用SimpleXML载入XML文件-取得XML元素n n在

    注意事项

    本文(PHP与XML.ppt)为本站会员(s****8)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开