读取数据和写入数据的实现代码,PHP读取XML值的代码
分类:web前端

xml文件

<?php 

本文实例讲述了PHP使用XMLWriter读写xml文件操作。分享给大家供大家参考,具体如下:

用Php读取XML最简单的情况:

 23
 开心的路飞
 男
 face/43.jpg
 123@qq.com
 1212121212 

    $xml = simplexml_load_file('example.xml');              //创建SimpleXML对象  
    var_dump($xml);                                                             //输出XML  
?> 

米扑科技旗下的多个产品,需要脚本自动生成sitemap.xml,于是重新温习一遍PHP XML读写操作。

XML文件(cy.xml)如下:
复制代码 代码如下:

php解析XML获取标签中的值

<?php 
    $xml = simplexml_load_file('example.xml');          //读取XML文件  
    foreach($xml->depart as $a)                                    //循环读取XML数据中的每一个depart标签  
    { 
        echo "$a->name <BR>";                                       //输出其中的name属性  
    } 
?> 

读写xml的方式,主要围绕XMLWriterXMLReader进行,前者用于生成xml,后者则是用来读取并解析xml

1
2
3

/*
 * _get_xml 获取的XML文件
* @access public 表示函数对外公开
* @param $_xmlfile xml文件
* $_html 从XML中取出的数据数组
* */
function _get_xml($_xmlfile){
  $_html = array();
  if(file_exists($_xmlfile)){
    $_xml = file_get_contents($_xmlfile);
    preg_match_all('/(.*)/', $_xml,$_dom);    
    foreach($_dom[1] as $_value){
      preg_match_all('/(.*)/', $_value,$_id);
      preg_match_all('/(.*)/', $_value,$_username);
      preg_match_all('/(.*)/', $_value,$_sex);
      preg_match_all('/(.*)/', $_value,$_face);
      preg_match_all('/(.*)/', $_value,$_email);
      preg_match_all('/(.*)/', $_value,$_qq);
      $_html['id'] = $_id[1][0];
      $_html['username'] = $_username[1][0];
      $_html['sex'] = $_sex[1][0];
      $_html['face'] = $_face[1][0];
      $_html['email'] = $_email[1][0];
      $_html['qq'] = $_qq[1][0];
    }
  }else{
    _alert_back("文件不存在");
  }
  return $_html;
}

<?php 
    $xml = simplexml_load_file('example.xml');          //读取XML文件  
    echo $xml->depart->name[0];                                  //输出节点  
?> 

写入 xml

Php文件(cy.php)如下:
复制代码 代码如下:

php向XML文件中写入数据

<?php 
    $xml = simplexml_load_file('example.xml'); 
    foreach ($xml->depart->children() as $depart)             //循环读取depart标签下的子标签  
    { 
       var_dump($depart);                                                        //输出标签的XML数据  
    } 
?> 

test_xml_write.php

$xml = new DOMDocument();
$xml->load('cy.xml');
foreach($xml->getElementsByTagName('list') as $list)
{
$value = $list->firstChild->nodeValue;
echo $value.”
”;
}
?>

/*
 * _set_xml将信息写入XML文件
* @access public 表示函数对外公开
* @param $_xmlfile xml文件
* @param $_clean 要写入的信息的数组
* */
function _set_xml($_xmlfile,$_clean){
  $_fp = @fopen('newuser.xml','w');
  if(!$_fp){
    exit('系统错误,文件不存在!');
  }
  flock($_fp,LOCK_EX);
  $_string = "rt";
  fwrite($_fp, $_string,strlen($_string));
  $_string = "rt";
  fwrite($_fp, $_string,strlen($_string));
  $_string = "t{$_clean['id']}rt";
  fwrite($_fp, $_string,strlen($_string));
  $_string = "t{$_clean['username']}rt";
  fwrite($_fp, $_string,strlen($_string));
  $_string = "t{$_clean['sex']}rt";
  fwrite($_fp, $_string,strlen($_string));
  $_string = "t{$_clean['face']}rt";
  fwrite($_fp, $_string,strlen($_string));
  $_string = "t{$_clean['email']}rt";
  fwrite($_fp, $_string,strlen($_string));
  $_string = "t{$_clean['url']}rt";
  fwrite($_fp, $_string,strlen($_string));
  $_string = "";
  fwrite($_fp, $_string,strlen($_string));
  flock($_fp,LOCK_UN);
  fclose($_fp);
}

<?php 
    $xml = simplexml_load_file('example.xml');                      //读取XML文件  
    $result = $xml->xpath('/departs/depart/employees/employee/name');        //定义节点  
    var_dump($result);                                          //输出节点  
?> 

openUri; // 输出到网页控制台$xml->openUri; // 输出到文件,需要读写权限,推荐 chmod 766 mimvp.xml// 设置缩进字符串$xml->setIndentString;$xml->setIndent;// xml文档开始$xml->startDocument;// 创建根节点$xml->startElement; // 节点1 $xml->startElement; $xml->writeAttribute; // 属性 $xml->startElement; $xml->text; $xml->endElement(); $xml->startElement; $xml->text; $xml->endElement; // 节点2 $xml->startElement; $xml->writeAttribute; // 属性 $xml->startElement; $xml->text; $xml->endElement(); $xml->startElement; $xml->text; $xml->endElement;$xml->endElement;//header("Content-type: text/xml");//取得缓冲区里的xml字符串//echo $xml->outputMemory();?>

cy.php的运行结果:
1
2
3

<?php 
    $xml = simplexml_load_file('example.xml');              //读取XML  
    $xml->depart->name[0] = "Human Resource";         //修改节点  
?> 

输出mimvp.xml文件内容:

=============

<?php 
    $xml = simplexml_load_file('example.xml');              //读取XML数据  
    echo $xml->asXML();                                                     //标准化XML数据  
?> 

  01 米扑代理   02 米扑财富 

用Php读取XML稍微复杂一点的情况:

<?php 
    $xml = simplexml_load_file('example.xml');              //读取XML数据  
    $newxml = $xml->asXML();                         //标准化XML数据  
    $fp = fopen("newxml.xml", "w");                  //打开要写入XML数据的文件  
    fwrite($fp, $newxml);                                    //写入XML数据  
    fclose($fp);                                                     //关闭文件  
?> 

  1. 新建mimvp.xml 文件:

cy.xml如下:
复制代码 代码如下:

touch mimvp.xml

1
2
3

  1. 授权mimvp.xml 文件:

cy.php如下(和第一种情况没有任何变化):
复制代码 代码如下:

chmod 766 mimvp.xml

$xml = new DOMDocument();
$xml->load('cy.xml');
foreach($xml->getElementsByTagName('list') as $list)
{
$value = $list->firstChild->nodeValue;
echo $value.”
”;
}
?>

读取 xml

cy.php的运行结果和第一次也相同:
1
2
3

test_xml_read.php

Php读取XML第三种情况:

open ;// 开始读取xmlwhile  { // 根据节点类型和元素名称取得文本节点或属性 if ($xml->nodeType == XMLREADER::ELEMENT && $xml->localName == 'item') { print $xml->getAttribute  . ""; } if ($xml->nodeType == XMLREADER::ELEMENT && $xml->localName == 'id') { $xml->read (); // 移动指针到下一个节点 print $xml->value . "t"; } if ($xml->nodeType == XMLREADER::ELEMENT && $xml->localName == 'name') { $xml->read (); print $xml->value . ""; } if ($xml->nodeType == XMLREADER::ELEMENT && $xml->localName == 'age') { $xml->read (); print $xml->value . ""; }}?>

XML文件(cy.xml)如下:
复制代码 代码如下:

01 米扑代理02 米扑财富

1
2
3

源代码及应用

4
5
6

请见米扑科技的Github:

Php文件(cy.php)如下(和第一次依然没有变化):
复制代码 代码如下:

还可点击此处本站下载

$xml = new DOMDocument();
$xml->load('cy.xml');
foreach($xml->getElementsByTagName('list') as $list)
{
$value = $list->firstChild->nodeValue;
echo $value.”
”;
}
?>

PS:这里再为大家提供几款关于xml操作的在线工具供大家参考使用:

cy.php的输出结果:
1
2
3
4
5
6

在线XML/JSON互相转换工具:

===========

在线格式化XML/在线压缩XML:

Php读取XML第四种情况,保持cy.xml不变,改变cy.php:

XML在线压缩/格式化工具:

XML文件(cy.xml)如下:
复制代码 代码如下:

XML代码在线格式化美化工具:

1
2
3

更多关于PHP相关内容感兴趣的读者可查看本站专题:《PHP针对XML文件操作技巧总结》、《PHP数组操作技巧大全》、《php字符串用法总结》、《php面向对象程序设计入门教程》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》

4
5
6

希望本文所述对大家PHP程序设计有所帮助。

Php文件(cy.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.”
”;
}
}
?>

cy.php输出结果:
1
2
3
4
5
6

为什么两次的cy.php不同,但输出结果是相同的?让我们来看下一个例子

==============

Php读取XML第五种情况,改变cy.xml,使cy.php保持第四种情况:

XML文件(cy.xml)如下:
复制代码 代码如下:

1
2
3

4
5
6

7
8
9

Php文件(cy.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.”
”;
}
}
?>

cy.php输出结果为:
1
2
3
4
5
6

为什么

7
8
9

中的7,8,9没有被读出来?
因为我们的cy.php只读取

标记中的内容.标记中的内容是不会被读取的.
我们这里所提到的”标记”,在XML里被称做”节点”;
关于”节点”的相关概念,我们将在以后说明.

Php读取XML情况六,再foreach一次,我们把7,8,9读出来!:

XML文件(cy.xm)如下:
复制代码 代码如下:

1
2
3

4
5
6

7
8
9

Php文件(cy.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.”
”;
}
}
$m = $xml->getElementsByTagName('m');
foreach( $m as $m)
{
$list = $m->getElementsByTagName( “list” );
foreach ( $list as $list )
{
$value = $list->firstChild->nodeValue;
echo $value.”
”;
}
}
?>

cy.php输出结果:
1
2
3
4
5
6
7
8
9

===============

Php读取XML情况七,cy.xml变得更复杂一些:

XML文件(cy.xml)如下:
复制代码 代码如下:

a

1
2
3

b

4
5
6

c

7
8
9

那么,我们如何只读出

中的值呢?

Php文件(cy.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.”
”;
}
$title = $main->getElementsByTagName( “title” );
foreach ( $title as $title )
{
$value = $title->firstChild->nodeValue;
echo $value.”
”;
}
}

$m = $xml->getElementsByTagName('m');
foreach( $m as $m)
{
$list = $m->getElementsByTagName( “list” );
foreach ( $list as $list )
{
$value = $list->firstChild->nodeValue;
echo $value.”
”;
}
}
?>

cy.php输出结果:
1
2
3
a
4
5
6

7
8
9

想一下,如何读出中

的值?

Php读取XML再通过一个例子巩固一下:

XML文件(cy.xml)如下:
复制代码 代码如下:

This is Text One
This is Text Two
This is Text Three

This is Text Four
This is Text Five
This is Text Six

Php文件(cy.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.”
”;
echo $value.”
”;
echo $id.”
”;
}
}
?>

如果用$LevelOne = $xml->getElementsByTagName('LevelOne')这样的方式取得节点,那么,读取里面的内容,需要用foreach 循环,因为$LevelOne = $xml->getElementsByTagName ('LevelOne')返回的,是一个集合,并不是一个具体的节点—-仅管叫做LevelOne的节点只有一个….
如果用$LevelOne = $xml->getElementsByTagName('LevelOne')->item(0)这样的方式取得节点,那么读取里面的内 容,可以直接$LevelOne->xxxxxx,因为这样返回的是一个具体的节点。

现在提供一种很简便的方法用PHP读取XML:

XML文件(cy.xml)如下:
复制代码 代码如下:

czbin xml版块

xml的相关文章

czbin php版块

php的相关文章

czbin ajax版块

ajax的相关文章

Php文件(cy.php)如下:
复制代码 代码如下:

$xml = simplexml_load_file('sxml.xml');
$part = $xml->site->part;
foreach ( $part as $content )
{
echo $content['id'].”
”;
echo $content->title.”
”;
echo $content->title['id'].”
”;
echo $content->describe.”
”;
}
?>

cy.php输出结果:
1
czbin xml版块
a
xml的相关文章
2
czbin php版块

php的相关文章
3
czbin ajax版块
c
ajax的相关文章

怎么样?的确很简单吧!

本文由10bet手机官网发布于web前端,转载请注明出处:读取数据和写入数据的实现代码,PHP读取XML值的代码

上一篇:PHP的mysqli 下一篇:socket实现的聊天室代码分享
猜你喜欢
热门排行
精彩图文