php怎么取读xml文件

 更新时间:2016年11月25日 16:55  点击:2292

<?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 - $publishern";
}
?>

MXML是一个可以让你在Adobe Flex中布局用户界面组件的一种XML语言。你也可以使用MXML声明来定义程序中的非可视化组件。安装好FLEX Development 后,你就可以轻松的结合PHP完成一个FLASH曲线图。
先从PHP入手:
FLEX 和PHP的交互最常用的就是
和XML的交互,就是用PHP生成XML,然后用FLEX去读取并且显示。
我们以XML的形式先写一个帐目详单的数据。
 
代码:
header("Content-Type: text/xml");
$arr = array(
                            array('day'=>'01','sum'=>'153.1'),
                            array('day'=>'02','sum'=>'882.86'),
                            array('day'=>'03','sum'=>'456.9'),
                            array('day'=>'04','sum'=>'717.7'),
                            array('day'=>'05','sum'=>'255.1'),
                            array('day'=>'06','sum'=>'533.1')
);
$xml_return  .= "<bills>";
foreach ( $arr as $use){
       $xml_return .="<bill><sum>{$use['sum']}</sum><name>{$use['day']}</name></bill> ";
}
$xml_return.= "</bills>";
echo $xml_return;
显示6个月的消费记录,$arr也可以是从数据库读出来的数据,这里只是作为一个例子,所以直接给一个数组赋值。
- <bills>
- <bill>
<sum>153.1</sum>
<name>01</name>
</bill>

- <bill>
<sum>882.86</sum>
<name>02</name>
</bill>

- <bill>
<sum>456.9</sum>
<name>03</name>
</bill>

- <bill>
<sum>717.7</sum>
<name>04</name>
</bill>

- <bill>
<sum>255.1</sum>
<name>05</name>
</bill>

- <bill>
<sum>533.1</sum>
<name>06</name>
</bill>

</bills>
 

Php部分就完成了 接下来是写MXML:
 
代码:
<?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute"  creationComplete="getaccount()">
   <mx:HTTPService id="listRequest" url="" useProxy="false" method="POST">
   <mx:request xmlns=""> </mx:request>
   </mx:HTTPService>
  
   <mx:Script><![CDATA[
    import mx.rpc.events.ResultEvent;//引用ResultEvent类
    public function getaccount():void{
  listRequest.url='http://localhost/arr.php';
     listRequest.send();
}
  ]]></mx:Script>
   <mx:LineChart showDataTips="true" clipContent="false" x="126" y="10" id="tongjitu"  dataProvider="{listRequest.lastResult.bills.bill}" width="678">
   <mx:horizontalAxis>     
    <mx:CategoryAxis dataProvider="{listRequest.lastResult.bills.bill}"  categoryField="name" title="(日)" />
   </mx:horizontalAxis> 
      <mx:series>
         <mx:LineSeries displayName="每日消费" yField="sum" xField="name"/>
    </mx:series>
   </mx:LineChart>
</mx:Application>
逐一解释一下
 
代码:
Application //MXML应用程序开头

 
代码:
creationComplete="getaccount()" //代表页面加载完成后 执行 getaccount函数

 
代码:
〈mx:HTTPService id="listRequest" url="" useProxy="false" method="POST"〉
   〈mx:request xmlns=""〉 〈/mx:request〉
   〈/mx:HTTPService〉
//则是一个HTTP的请求,发送POST到一个PHP文件 去获取数据

 
代码:
mx:Script //MXML里面的脚本 都用 <mx:Script>包含进去

下面分析下getaccount函数:
 
代码:
public function getaccount():void{
       listRequest.url='http://localhost/arr.php';
        listRequest.send();
    }
//列出了 HTTPService 请求地址是  http://localhost/arr.php
//你同样也可以写成相对路径 比如 listRequest.url='./arr.php';

 
代码:
mx:LineChart  //是一个 曲线 组件,我们可以直接拿来使用

 
代码:
dataProvider :数据源:listRequest.lastResult.bills.bill
       bills.bill 是XML里面的标签

 
代码:
  mx:LineSeries displayName="每日消费" yField="sum" xField="name" 
//则定义了 横纵坐标的值。   
//Sum  name  就是XML里面的数据的标签

读取xml文件,php 读取html文件,如何读取xml文件

$obj = new JZH_xml("<STRING>asdfasdf</STRING>");
$obj->setChar('gb2312');
$obj->getElementByTagname('string',0)->value;
$obj->getstring(0)->value;
...
/*
       轻便的xml文档操作
       setChar 编码转换
       parse 解析xml文档
       parse_file 从文件解析xml文档
       getElementByTagname 获得tag对象
       get<tag> 获得tag对象
*/
class JZH_xml{
       var $index;
       var $vals;
       var $in='utf-8';
       var $out='utf-8';
       var $xmlobj;
       function JZH_xml($data=false,$in=false,$out=false){
              $this->xmlobj = xml_parser_create();
              if($data){
                     xml_parse_into_struct($this->xmlobj, $data, $this->vals, $this->index);
                     xml_parser_free($this->xmlobj);
              }
       }
       function setChar($out=false,$in=false){
              if($in)$this->in=$in;
              if($out)$this->out=$out;
              array_walk_recursive($this->vals,array($this,'iconv'));
       }
       function iconv(&$value, $key){
              $value=iconv($this->in,$this->out,$value);
       }
       function parse($data){
              
              xml_parse_into_struct($this->xmlobj, $data, $this->vals, $this->index);
              xml_parser_free($this->xmlobj);
       }
       function parse_file($file){
              $data = file_get_contents($file);
              $this->parse($data);
       }
       function getElementByTagname($tag,$index){
              $tag = strtoupper($tag);
              if(!isset($this->index[$tag][$index]))return false;
              $index = $this->index[$tag][$index];
              return (object)$this->vals[$index];
       }
       function __call($name,$arguments){
              if(($tag=str_replace('GET','',strtoupper($name)))==strtoupper($name))return false;
              return $this->getElementByTagname($tag,$arguments[0]);
       }
}

 代码如下 复制代码

<?php
  $books = array();
  $books [] = array(
  'title' => 'PHP Hacks',
  'author' => 'Jack Herrington',
  'publisher' => "O'Reilly"
  );
  $books [] = array(
  'title' => 'Podcasting Hacks',
  'author' => 'Jack Herrington',
  'publisher' => "O'Reilly"
  );
 
  $doc = new DOMDocument();
  $doc->formatOutput = true;
 
  $r = $doc->createElement( "books" );
  $doc->appendChild( $r );
 
  foreach( $books as $book )
  {
  $b = $doc->createElement( "book" );
 
  $author = $doc->createElement( "author" );
  $author->appendChild(
  $doc->createTextNode( $book['author'] )
  );
  $b->appendChild( $author );
 
  $title = $doc->createElement( "title" );
  $title->appendChild(
  $doc->createTextNode( $book['title'] )
  );
  $b->appendChild( $title );
 
  $publisher = $doc->createElement( "publisher" );
  $publisher->appendChild(
  $doc->createTextNode( $book['publisher'] )
  );
  $b->appendChild( $publisher );
 
  $r->appendChild( $b );
  }
 
  echo $doc->saveXML();
  ?>

 php 读取xml   php读取远程xml   php 读取文件   读取xml文件 
 

<?php
$path = 'http://xxx.xxx.xxx/example.xml';
$str = file_get_contents($path);
$str = <<<str
...
<yw:cdtn text="Fair" code="34" temp="7" date="Thu, 10 Apr 2008 9:50 am BST" />
...
<yw:f day="Thu" date="10 Apr 2008" low="1" high="11" text="Light Rain" code="11" />
<yw:f day="Fri" date="11 Apr 2008" low="1" high="10" text="Light Rain" code="11" />
...
str;
preg_match('/<yw:cdtn.*text="(.*)"/iU', $str, $arr);
echo $arr[1];
preg_match_all('/<yw:f.*text="(.*)"/iU', $str, $arr);
print_r($arr[1]);
?>

[!--infotagslink--]

相关文章

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

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

    这篇文章主要介绍了JupyterNotebook读取csv文件出现的问题及解决,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教...2023-01-06
  • 源码分析系列之json_encode()如何转化一个对象

    这篇文章主要介绍了源码分析系列之json_encode()如何转化一个对象,对json_encode()感兴趣的同学,可以参考下...2021-04-22
  • php中去除文字内容中所有html代码

    PHP去除html、css样式、js格式的方法很多,但发现,它们基本都有一个弊端:空格往往清除不了 经过不断的研究,最终找到了一个理想的去除html包括空格css样式、js 的PHP函数。...2013-08-02
  • Photoshop打开PSD文件空白怎么解决

    有时我们接受或下载到的PSD文件打开是空白的,那么我们要如何来解决这个 问题了,下面一聚教程小伙伴就为各位介绍Photoshop打开PSD文件空白解决办法。 1、如我们打开...2016-09-14
  • 解决python 使用openpyxl读写大文件的坑

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

    这篇文章主要介绍了C#实现HTTP下载文件的方法,包括了HTTP通信的创建、本地文件的写入等,非常具有实用价值,需要的朋友可以参考下...2020-06-25
  • C#操作本地文件及保存文件到数据库的基本方法总结

    C#使用System.IO中的文件操作方法在Windows系统中处理本地文件相当顺手,这里我们还总结了在Oracle中保存文件的方法,嗯,接下来就来看看整理的C#操作本地文件及保存文件到数据库的基本方法总结...2020-06-25
  • SpringBoot实现excel文件生成和下载

    这篇文章主要为大家详细介绍了SpringBoot实现excel文件生成和下载,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2021-02-09
  • php无刷新利用iframe实现页面无刷新上传文件(1/2)

    利用form表单的target属性和iframe 一、上传文件的一个php教程方法。 该方法接受一个$file参数,该参数为从客户端获取的$_files变量,返回重新命名后的文件名,如果上传失...2016-11-25
  • php批量替换内容或指定目录下所有文件内容

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

    又码了一个周末的代码,这次在做一些关于文件上传的东西。(PHP UPLOAD)小有收获项目是一个BT种子列表,用户有权限上传自己的种子,然后配合BT TRACK服务器把种子的信息写出来...2016-11-25
  • Zend studio文件注释模板设置方法

    步骤:Window -> PHP -> Editor -> Templates,这里可以设置(增、删、改、导入等)管理你的模板。新建文件注释、函数注释、代码块等模板的实例新建模板,分别输入Name、Description、Patterna)文件注释Name: 3cfileDescriptio...2013-10-04
  • index.php怎么打开?如何打开index.php?

    index.php怎么打开?初学者可能不知道如何打开index.php,不会的同学可以参考一下本篇教程 打开编辑:右键->打开方式->经文本方式打开打开运行:首先你要有个支持运行PH...2017-07-06
  • AI源文件转photoshop图像变模糊问题解决教程

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

    这篇文章主要介绍了C++万能库头文件在vs中的安装步骤(图文),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-02-23
  • 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
  • C#使用StreamWriter写入文件的方法

    这篇文章主要介绍了C#使用StreamWriter写入文件的方法,涉及C#中StreamWriter类操作文件的相关技巧,需要的朋友可以参考下...2020-06-25
  • php实现文件下载实例分享

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