动网论坛,站长建站首选,国内使用量最多的论坛软件 动网论坛官方技术讨论区 站长工具 申请属于您自己的免费论坛
首页 | 新闻资讯 | 网站运营 | 网络编程 | 数据库 | 服务器 | 网页设计 | 图像媒体 | 网络应用 | 搜索优化 | 资源下载 | 动网主机 | DVBOX
    本站内  互联网 ASP论坛  ASP.Net论坛  PHP论坛
   PHP → 阅读文章

 PHP中的类-操作XML(1)

作者来源: 
阅读 数 413 人次 , 2006-4-18 15:26:00 

 

http://www.hansanderson.com/ me

<?php

/*
   (c) 2000 Hans Anderson Corporation.  All Rights Reserved.
   You are free to use and modify this class under the same
   guidelines found in the PHP License.

   -----------

   bugs/me:
   http://www.hansanderson.com/php/
   me@hansanderson.com

   -----------

   Version 1.0

       - 1.0 is the first actual release of the class.  It's  
         finally what I was hoping it would be, though there
         are likely to still be some bugs in it.  This is
         a much changed version, and if you have downloaded
         a previous version, this WON'T work with your existing
         scripts!  You'll need to make some SIMPLE changes.

       - .92 fixed bug that didn't include tag attributes

         (to use attributes, add _attributes[array_index]
          to the end of the tag in question:
           $xml_html_head_body_img would become
           $xml_html_head_body_img_attributes[0],  
          for example)

          -- Thanks to Nick Winfield <nick@wirestation.co.uk>
             for reporting this bug.

       - .91 No Longer requires PHP4!

       - .91 now all elements are array.  Using objects has
         been discontinued.

   -----------

   What class.xml.php is:

   A very, very easy to use XML parser class. It uses PHP's XML functions
   for you, returning one array that has all the tag information.  The only  
   hard part is figuring out the syntax of the tags!

   -----------

   Sample use:

   require('class.xml.php');
   $file = "data.xml";
   $data = implode("",file($file)) or die("could not open XML input file");
   $obj = new xml($data,"xml");


   print $xml["hans"][0]->num_results[0];
   for($i=0;$i<sizeof($xml["hans"]);$i++) {
    print $xml["hans"][$i]->tag[0] . " ";
   }

   To print url attributes (if they exist):

   print $xml["hans"][0]->attributes[0]["size"]; # where "size" was an attr name

   (that's it! slick, huh?)
   -----------

   Two ways to call xml class:  

       $xml = new xml($data);
       - or -
       $xml = new xml($data,"jellyfish");

   The second argument (jellyfish) is optional.  Default is 'xml'.
   All the second argument does is give you a chance to name the array
   that is returned something besides "xml" (in case you are already using
   that name).  Normal PHP variable name rules apply.

   ----------

   Explanation of xml class:

   This class takes valid XML data as an argument and  
   returns all the information in a complex but loopable array.

   Here's how it works:

       Data:

           <html>
            <head>
             <title>Hans Anderson's XML Class</title>
            </head>
            <body>
            </body>
           </html>

       Run the data through my class, then access the title like this:
       $xml["html_head"][0]->title[0];

       Or, loop through them:
       for($i=0;$i<sizeof($xml["html_head"]);$i++) {
           print $xml["html_head"][$i]->title[0] . " ";
       }

       Yes, the variable names *are* long and messy, but it's
       the best way to create the tree, IMO.


Here is a complex explanation I sent to one class.xml.php user:

---------

> Now I've run into another problem:
>
> <STORY TIMESTAMP="2000-12-15T20:08:00,0">
> <SECTION>Markets</SECTION>
> <BYLINE>By <BYLINE_AUTHOR ID="378">Aaron L. Task</BYLINE_AUTHOR><BR/>Senior
> Writer</BYLINE>
> </STORY>
>
> How do I get BYLINE_AUTHOR?

print $xml["STORY_BYLINE"][0]->BYLINE_AUTHOR[0];

> And just a little question: Is there an easy way to get TIMESTAMP?

print $xml["STORY"][0]->attributes[0]["TIMESTAMP"];

This is confusing, I know, but it's the only way I could really do
this.  Here's the rundown:

The $xml part is an array -- an array of arrays.  The first array is the

  
 
 收藏本文  打印本文  论坛讨论  关闭窗口
· 上一篇:PHP中的类-操作XML(2)
· 下一篇:PHP语句
· php重大发现phpinfo()竟然也使用了xml
· 判断字符串emailAddr是否为合法的email格式
· 在数据库中使用对象的好处
· vBulletin HACK----关于排版的两个HACK
· PHP应用程序加速探索之简介


关于本站 | 联系我们 | 业务合作 | 客户案例 | 诚聘英才 | 广告合作 | 收藏本站
海口动网先锋网络科技有限公司版权所有
Copyright © 2000 - 2006 Cndw.Com
中华人民共和国电信与信息服务业务经营许可证编号 琼 ICP 020077