php读取xml文件的xml实例代码

 更新时间:2016年11月25日 16:55  点击:1899
本文章为你提供一款php xml读取类,很简单的一个xml分析类了,它可读取指它xml文档,并且输出或取得指定节点的xml数据哦。
 代码如下 复制代码
class dom
{
  protected $_dom = null;
  
  public function __construct($xmlfile = '',$ver = '',$encoding = '')
  {
    $this -> _dom = ($ver && $encoding)? new domdocument($ver,$encoding):new domdocument();
    $xml = !$xmlfile?file_get_contents('php://input'):file_get_contents($xmlfile);
    $this -> _dom -> loadxml($xml);
  }
  
  public function getvalue($nodename)
  {
    $nodes = $this -> _dom -> getelementsbytagname($nodename);
    return null !== $nodes -> item(0)?$nodes -> item(0) -> nodevalue:false;
  }
}


//本xml类代码是利用了php domdocument来解析xml文档  ?>

这是一款我在做flash xml交互时,利用php生成xml并把生成的xml数据保存到一个指定xml文档里了
 代码如下 复制代码

function cleanstring($str){
 $str = rawurldecode($str);
 $badchars = array("<", ">", ".", "/", "?", "#", "*", "(", ")", "[", "]", "{", "}", "\", ",", "=", '"', "'", ":", ";", "^", "@", "~", "!", " ");
 $clean = "";
 for($i=0; $i<strlen($str); $i++){
  if(array_search($str[$i], $badchars) === false){
   $clean .= $str[$i];
  }
 }
 return $clean;
}
$name = rawurlencode($_post['fname']);
$message = rawurlencode($_post['message']);
$xml = '<drawing message="'.$message.'" fname="'.$name.'">';
$xml .= $_post['xml'];
$xml .="</drawing>";
$t = time();

$filename = 'data/'.'99999'.$t.'_'.cleanstring($name).'.xml';
$file = fopen($filename, "w");
fwrite($file, strips教程lashes($xml));
fclose($file);

//print "xml=".$xml; 这里生成xml我们用了很简单的方法就是利用php fopen 创建一个文档,并保存成xml格式的。

下面这主要是针对于DOMDocument对于xml的简单操作来举例说明了, 我们主要是讲到了关于xml的创建,加载,解析xml哦。
 代码如下 复制代码

$xml_str = "<?xml version='1.0'?>";
$xml_str .= "<books>";
$xml_str .= "<book>";
$xml_str .= "<title>harry potter</title>";
$xml_str .= "<author>j.k.rowling</author>";
$xml_str .= "<publisher>warner bros.</publisher>";
$xml_str .= "<price>39.0</price>";
$xml_str .= "</book>";
$xml_str .= "</books>";

$dom = new domdocument;
$dom->loadxml($xml_str);

echo $dom->savexml();
$dom->save("test.xml");

//domdocument 加载xml文档

$dom = new domdocument;

$dom->load('17-1.xml');
$root = $dom->documentelement;


//解析xml文档

 代码如下 复制代码

$doc = new domdocument();
$doc->load("17-1.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;
   
    $prices = $book->getelementsbytagname("price");
    $price = $prices->item(0)->nodevalue;
   
    echo "$title - $author - $publisher - $price";
    echo "<br/>";
    echo "<br/>";
}

/*
17-1.xml

 代码如下 复制代码
<?xml version="1.0" encoding="gb2312"?>
<books>
    <book>
        <title>learning php5</title>
        <author>david</author>
        <publisher>white water press</publisher>
        <price>29.90</price>
    </book>
    <book>
        <title>learning xml</title>
        <author>jeffson</author>
        <publisher>white water press</publisher>
        <price>50.79</price>
    </book>
    <book>
        <title>using perl</title>
        <author>lucas</author>
        <publisher>white water press</publisher>
        <price>17.00</price>
    </book>
    <book>
        <title>windows networks</title>
        <author>paul</author>
        <publisher>white water press</publisher>
        <price>32.99</price>
    </book>
    <book>
        <title>fly leaf</title>
        <author>jenny</author>
        <publisher>white water press</publisher>
        <price>19.50</price>
    </book>
</books>

*/
?>

//photo_xml类,继承php5的domdocument类

 代码如下 复制代码
class photo_xml extends domdocument
{
    private $root;    //属性
    //构造函数
    public function __construct()
    {
        parent::__construct();
        if (!file_exists("sitecontent.xml"))
        {
            $xmlstr = "<?xml version='1.0' encoding='gb2312'?><bookpages></bookpages>";
            $this->loadxml($xmlstr);
            $this->save("sitecontent.xml");
        }
        else
        {
            $this->load("sitecontent.xml");
        }
    }
   
    //添加图片
    public function addphoto($address,$note)
    {
        $root = $this->documentelement;
        //获取留言消息
       
        $node_address = $this->createelement("page"); //添加<page>标签
        $type=$this->createattribute("src");
        $node_address->appendchild($type);    //添加src的属性
        $type_text=$this->createtextnode($address);
        $type->appendchild($type_text);
        $text= $this->createtextnode(iconv("gb2312","utf-8",$note));
        $node_address->appendchild($text);
        //加入到根结点下
        $root->appendchild($this->appendchild($node_address));
        $this->save("sitecontent.xml");
    }
}

?>

<?php

 代码如下 复制代码
$photo_xml=new photo_xml();
$photo_xml->addphoto('./www.111cn.net/p31.jpg','page31');


?>

<?
if (defined('_class_rss_php教程')) return;
define('_class_rss_php教程',1);
/**
 
 *  使用说明:
 *  $rss = new rss('redfox','http://111cn.net/',"redfox's blog");
 *  $rss->additem('rss class',"http://www.111cn.net","xxx",date());
 *  $rss->additem(...);
 *  $rss->savetofile(...);
 */

 

 代码如下 复制代码

class rss {
   //public
   $rss_ver = "2.0";
   $channel_title = '';
   $channel_link = '';
   $channel_description = '';
   $language = 'zh_cn';
   $copyright = '';
   $webmaster = '';
   $pubdate = '';
   $lastbuilddate = '';
   $generator = 'redfox rss generator';


   $content = '';
   $items = array();


   function rss($title, $link, $description) {
       $this->channel_title = $title;
       $this->channel_link = $link;
       $this->channel_description = $description;
       $this->pubdate = date('y-m-d h:i:s',time());
       $this->lastbuilddate = date('y-m-d h:i:s',time());
   }


   function additem($title, $link, $description ,$pubdate) {
       $this->items[] = array('titile' => $title ,
                        'link' => $link,
                        'description' => $description,
                        'pubdate' => $pubdate);
   }


   function buildrss() {
       $s = "<!--l version="1.0" encoding="gb2312"--> ";
       // start channel
       $s .= " ";
       $s .= " "
       $s .= "<link />{$this->channel_link} ";
       $s .= "{$this->channel_description} ";
       $s .= "{$this->language} ";
       if (!empty($this->copyright)) {
          $s .= "{$this->copyright} ";
       }
       if (!empty($this->webmaster)) {
          $s .= "{$this->webmaster} ";
       }
       if (!empty($this->pubdate)) {
          $s .= "{$this->pubdate} ";
       }


       if (!empty($this->lastbuilddate)) {
          $s .= "{$this->lastbuilddate} ";
       }


       if (!empty($this->generator)) {
          $s .= "{$this->generator} ";
       }
     
       // start items
       for ($i=0;$iitems),$i++) {
           $s .= " ";
           $s .= " ";
           $s .= "<link />{$this->items[$i]['link']} ";
           $s .= "<!--data[{$thi-->items[$i]['description']}]]> ";
           $s .= "{$this->items[$i]['pubdate']} ";         
           $s .= " ";
       }
    
      // close channel
      $s .= " ";
      $this->content = $s;
   }


   function show() {
       if (empty($this->content)) $this->buildrss();
       header('content-type:text/xml');
       echo($this->content);
   }


   function savetofile($fname) {
       if (empty($this->content)) $this->buildrss();
       $handle = fopen($fname, 'wb');
       if ($handle === false)  return false;
       fwrite($handle, $this->content);
       fclose($handle);
   }
}


?>
同时也可以用网页特效来解析xml文档

[!--infotagslink--]

相关文章

  • php读取zip文件(删除文件,提取文件,增加文件)实例

    下面小编来给大家演示几个php操作zip文件的实例,我们可以读取zip包中指定文件与删除zip包中指定文件,下面来给大这介绍一下。 从zip压缩文件中提取文件 代...2016-11-25
  • Jupyter Notebook读取csv文件出现的问题及解决

    这篇文章主要介绍了JupyterNotebook读取csv文件出现的问题及解决,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教...2023-01-06
  • C#从数据库读取图片并保存的两种方法

    这篇文章主要介绍了C#从数据库读取图片并保存的方法,帮助大家更好的理解和使用c#,感兴趣的朋友可以了解下...2021-01-16
  • Photoshop打开PSD文件空白怎么解决

    有时我们接受或下载到的PSD文件打开是空白的,那么我们要如何来解决这个 问题了,下面一聚教程小伙伴就为各位介绍Photoshop打开PSD文件空白解决办法。 1、如我们打开...2016-09-14
  • C#操作本地文件及保存文件到数据库的基本方法总结

    C#使用System.IO中的文件操作方法在Windows系统中处理本地文件相当顺手,这里我们还总结了在Oracle中保存文件的方法,嗯,接下来就来看看整理的C#操作本地文件及保存文件到数据库的基本方法总结...2020-06-25
  • 解决python 使用openpyxl读写大文件的坑

    这篇文章主要介绍了解决python 使用openpyxl读写大文件的坑,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-03-13
  • C#实现HTTP下载文件的方法

    这篇文章主要介绍了C#实现HTTP下载文件的方法,包括了HTTP通信的创建、本地文件的写入等,非常具有实用价值,需要的朋友可以参考下...2020-06-25
  • SpringBoot实现excel文件生成和下载

    这篇文章主要为大家详细介绍了SpringBoot实现excel文件生成和下载,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2021-02-09
  • php把读取xml 文档并转换成json数据代码

    在php中解析xml文档用专门的函数domdocument来处理,把json在php中也有相关的处理函数,我们要把数据xml 数据存到一个数据再用json_encode直接换成json数据就OK了。...2016-11-25
  • php无刷新利用iframe实现页面无刷新上传文件(1/2)

    利用form表单的target属性和iframe 一、上传文件的一个php教程方法。 该方法接受一个$file参数,该参数为从客户端获取的$_files变量,返回重新命名后的文件名,如果上传失...2016-11-25
  • C#使用StreamWriter写入文件的方法

    这篇文章主要介绍了C#使用StreamWriter写入文件的方法,涉及C#中StreamWriter类操作文件的相关技巧,需要的朋友可以参考下...2020-06-25
  • php批量替换内容或指定目录下所有文件内容

    要替换字符串中的内容我们只要利用php相关函数,如strstr,str_replace,正则表达式了,那么我们要替换目录所有文件的内容就需要先遍历目录再打开文件再利用上面讲的函数替...2016-11-25
  • PHP文件上传一些小收获

    又码了一个周末的代码,这次在做一些关于文件上传的东西。(PHP UPLOAD)小有收获项目是一个BT种子列表,用户有权限上传自己的种子,然后配合BT TRACK服务器把种子的信息写出来...2016-11-25
  • AI源文件转photoshop图像变模糊问题解决教程

    今天小编在这里就来给photoshop的这一款软件的使用者们来说下AI源文件转photoshop图像变模糊问题的解决教程,各位想知道具体解决方法的使用者们,那么下面就快来跟着小编...2016-09-14
  • C++万能库头文件在vs中的安装步骤(图文)

    这篇文章主要介绍了C++万能库头文件在vs中的安装步骤(图文),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-02-23
  • Zend studio文件注释模板设置方法

    步骤:Window -> PHP -> Editor -> Templates,这里可以设置(增、删、改、导入等)管理你的模板。新建文件注释、函数注释、代码块等模板的实例新建模板,分别输入Name、Description、Patterna)文件注释Name: 3cfileDescriptio...2013-10-04
  • C#路径,文件,目录及IO常见操作汇总

    这篇文章主要介绍了C#路径,文件,目录及IO常见操作,较为详细的分析并汇总了C#关于路径,文件,目录及IO常见操作,具有一定参考借鉴价值,需要的朋友可以参考下...2020-06-25
  • php文件上传你必须知道的几点

    本篇文章主要说明的是与php文件上传的相关配置的知识点。PHP文件上传功能配置主要涉及php.ini配置文件中的upload_tmp_dir、upload_max_filesize、post_max_size等选项,下面一一说明。打开php.ini配置文件找到File Upl...2015-10-21
  • ant design中upload组件上传大文件,显示进度条进度的实例

    这篇文章主要介绍了ant design中upload组件上传大文件,显示进度条进度的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-10-29
  • php实现文件下载实例分享

    举一个案例:复制代码 代码如下:<?phpclass Downfile { function downserver($file_name){$file_path = "./img/".$file_name;//转码,文件名转为gb2312解决中文乱码$file_name = iconv("utf-8","gb2312",$file_name...2014-06-07