设为首页 收藏本站
查看: 379|回复: 0

[经验分享] php xml(转)

[复制链接]

尚未签到

发表于 2017-3-20 13:41:46 | 显示全部楼层 |阅读模式
简单读取XML的方法 
Java代码   DSC0000.png


  • <?xml version="1.0" encoding="gb2312"?>  
  • <xml>  
  • <site>  
  • <part id="1">  
  • <title id="a">czbin xml版块</title>  
  • <describe>xml的相关文章</describe>  
  • </part>  
  • <part id="2">  
  • <title id="b">czbin php版块</title>  
  • <describe>php的相关文章</describe>  
  • </part>  
  • <part id="3">  
  • <title id="c">czbin ajax版块</title>  
  • <describe>ajax的相关文章</describe>  
  • </part>  
  • </site>  
  • </xml>  


Java代码  


  • <?php  
  • $xml = simplexml_load_file('sxml.xml');  
  • $part = $xml->site->part;  
  • foreach ( $part as $content )  
  • {  
  • echo $content['id']."<br />";  
  • echo $content->title."<br />";  
  • echo $content->title['id']."<br />";  
  • echo $content->describe."<br />";  
  • }  
  • ?>  


输出结果: 
Java代码  


  • 1  
  • czbin xml版块  
  • a  
  • xml的相关文章  
  • 2  
  • czbin php版块  
  • b  
  • php的相关文章  
  • 3  
  • czbin ajax版块  
  • c  
  • ajax的相关文章  



DOM读取 
Java代码  


  • <?xml version="1.0" encoding="gb2312"?>  
  • <xml>  
  • <main>  
  • <list>1</list>  
  • <list>2</list>  
  • <list>3</list>  
  • </main>  
  • <main>  
  • <list>4</list>  
  • <list>5</list>  
  • <list>6</list>  
  • </main>  
  • <m>  
  • <list>7</list>  
  • <list>8</list>  
  • <list>9</list>  
  • </m>  
  • </xml>  


Java代码  


  • <?php  
  • $xml = new DOMDocument();  
  • $xml->load('cy.xml');  
  • $main = $xml->getElementsByTagName('main');  
  • foreach( $main as $main)  
  • {  
  •     $list = $main->getElementsByTagName( "list" );  
  •     foreach ( $list as $list )  
  •     {  
  •         $value = $list->firstChild->nodeValue;  
  •         echo $value."<br />";  
  •     }  
  • }  
  • $m = $xml->getElementsByTagName('m');  
  • foreach( $m as $m)  
  • {  
  •     $list = $m->getElementsByTagName( "list" );  
  •     foreach ( $list as $list )  
  •     {  
  •         $value = $list->firstChild->nodeValue;  
  •         echo $value."<br />";  
  •     }  
  • }  
  • ?>  



Java代码  


  • <?xml version="1.0" encoding="gb2312"?>  
  • <LevelOne>  
  • <LevelTwo>  
  • <LevelThree id="1">This is Text One</LevelThree>  
  • <LevelThree id="2">This is Text Two</LevelThree>  
  • <LevelThree id="3">This is Text Three</LevelThree>  
  • </LevelTwo>  
  • <LevelTwo>  
  • <LevelThree id="4">This is Text Four</LevelThree>  
  • <LevelThree id="5">This is Text Five</LevelThree>  
  • <LevelThree id="6">This is Text Six</LevelThree>  
  • </LevelTwo>  
  • </LevelOne>  


Java代码  


  • <?php  
  • $xml = new DOMDocument(); //建立一个DOMDocument  
  • $xml->load('cy.xml'); //Php指定需要读取xml文件的位置  
  • $LevelOne = $xml->getElementsByTagName('LevelOne');//按照名称取得节点,返回所有节点的集合,不过这里这样读LevelOne是没有意义的....  
  • $LevelOne = $xml->getElementsByTagName('LevelOne')->item(0);//返回第一个LevelOne节点中的内容  
  • $LevelTwo = $LevelOne->getElementsByTagName('LevelTwo'); //按照名称取得节点,返回所有LevelTwo  
  • foreach ( $LevelTwo as $Content )//循环读出所有LevelTwo,并在循环里,把LevelTwo用Content表示  
  • {  
  •     $LevelThree = $Content->getElementsByTagName('LevelThree');//返回所有LevelThree  
  •     foreach ( $LevelThree as $Concert )  
  •     {  
  •         $name = $Concert->nodeName;//节点名称  
  •         $value = $Concert->nodeValue;//节点值  
  •         $id = $Concert->getAttribute('id');//"id"属性值  
  •         echo $name."<br />";  
  •         echo $value."<br />";  
  •         echo $id."<br />";  
  •     }  
  • }  
  • ?>  


$main=$doc->getElementsByTagName('main'); 返回的是一个集合 需要foreach遍历 
$main=$doc->getElementsByTagName('main')->item(0) 返回的是一个具体的节点 如果有多个<main></main>返回第一个 
$name=$title->nodeName; //节点名 title、list等 
$value=$title->nodeValue; //节点值 

http://www.ibm.com/developerworks/cn/opensource/os-xmldomphp/ 
Java代码  


  • <books>  
  •   <book>  
  •   <author>Jack Herrington</author>  
  •   <title>PHP Hacks</title>  
  •   <publisher>O'Reilly</publisher>  
  •   </book>  
  •   <book>  
  •   <author>Jack Herrington</author>  
  •   <title>Podcasting Hacks</title>  
  •   <publisher>O'Reilly</publisher>  
  •   </book>  
  •   </books>  


Java代码  


  • <?php  
  •   $doc = new DOMDocument();  
  •   $doc->load( 'books.xml' );  
  •     
  •   $books = $doc->getElementsByTagName( "book" );  
  •   foreach( $books as $book )  
  •   {  
  •   $authors = $book->getElementsByTagName( "author" );  
  •   $author = $authors->item(0)->nodeValue;  
  •     
  •   $publishers = $book->getElementsByTagName( "publisher" );  
  •   $publisher = $publishers->item(0)->nodeValue;  
  •     
  •   $titles = $book->getElementsByTagName( "title" );  
  •   $title = $titles->item(0)->nodeValue;  
  •     
  •   echo "$title - $author - $publisher\n";  
  •   }  
  •   ?>  


  对数据进行解析是应用开发必不可少的一个环节。下面是使用XML Parser对XML文档进行解析的过程:
Php代码   DSC0001.png


  • <?php  
  • // 处理开始元素函数  
  • function startElementHandler($parser$element$attributes) {  
  •     echo "元素开始:".$element."<br>";  
  •     if($attributes) {  
  •         echo "属性:";  
  •         foreach ( $attributes as $key => $value ) {  
  •             echo $key."=".$value." ";  
  •         }  
  •         echo "<br>";  
  •     }  
  • }  
  •   
  • // 处理结束元素函数  
  • function endElementHandler($parser$element) {  
  •     echo "元素结束:".$element."<br><br>";  
  • }  
  •   
  • // 处理字符串数据函数  
  • function characterDataHandler($parser$data) {  
  •     if(trim($data)) {  
  •         echo "字符串数据:".htmlspecialchars($data)."<br>";  
  •     }  
  • }  
  •   
  • // 处理解析错误函数  
  • function parserError($parser) {  
  •     $code = xml_get_error_code($parser);  
  •     $error = xml_error_string($code);  
  •     $errorColumn = xml_get_current_column_number($parser);  
  •     $errorLine = xml_get_current_line_number($parser);  
  •     return "错误代码:".$code." 错误:".$error."在第".$errorLine."行第".$errorColumn."列";  
  • }  
  •   
  • // 创建解析器  
  • $parser = xml_parser_create();  
  •   
  • // 注册元素处理函数  
  • xml_set_element_handler($parser"startElementHandler""endElementHandler");  
  • xml_set_character_data_handler($parser"characterDataHandler");  
  •   
  • // 获取文件内容  
  • $xml = file_get_contents("parser.xml");  
  •   
  • // 开始解析parser.xml文档,解析错误就调用错误处理函数  
  • xml_parse($parser$xmlor die(parserError());  
  •   
  • // 删除解析器并释放内存  
  • xml_parser_free($parser);  
  •   
  • ?>  

    我们给定的XML示例是:
Xml代码  


  • <?xml version="1.0" encoding="UTF-8"?>  
  • <phpedu>  
  •     <title>PHP100</title>  
  •     <item type="text" name="item">  
  •         <contents type="text">PHP</contents>  
  •         <contents>SQL</contents>  
  •         <contents>Linux</contents>  
  •         <contents>Apache</contents>  
  •     </item>  
  •     <address type="URL">www.php100.com</address>  
  • </phpedu>  

    多说一句:希望对您有所帮助!不同语言对XML的解析区别于形式,统一于本质!:)
 

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-352478-1-1.html 上篇帖子: php.ini 配置 下篇帖子: Php类详解
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表