php添加数量到xml文件的例子,DOM基础及php读取xml内容操作的不二法门

By admin in 4858.com on 2019年2月2日

php添加数据到xml文件中

时间:2015-12-17 06:30:37来源:网络

导读:php添加数据到xml文件中

php添加数量到xml文件的例子,DOM基础及php读取xml内容操作的不二法门。 

xml文件:stu.xml:

复制代码代码如下:

<?xml version=”1.0″ encoding=”utf-8″ ?>
<AllData>
<xueshengmen>
<xuesheng>
  <name>张三</name>
  <yuwen>80</yuwen>
  <shuxue>90</shuxue>
  <yingyu>70</yingyu>
</xuesheng>
<xuesheng>
  <name>李四</name>
  <yuwen>60</yuwen>
  <shuxue>90</shuxue>
  <yingyu>75</yingyu>
</xuesheng>
</xueshengmen>
</AllData>

以上文件stu.xml提供了有些学员数量。
现今亟待在每个xuesheng的节点里面添加一个zongfen的质量并且它的值等于yuwen+shuxue+yingyu的值
如下所示:

复制代码代码如下:

<?xml version=”1.0″ encoding=”utf-8″ ?>
<AllData>
<xueshengmen>
<xuesheng>
  <name>张三</name>
  <yuwen>80</yuwen>
  <shuxue>90</shuxue>
  <yingyu>70</yingyu>
  <zongfen>240</zongfen>
</xuesheng>
<xuesheng>
  <name>李四</name>
  <yuwen>60</yuwen>
  <shuxue>90</shuxue>
  <yingyu>75</yingyu>
  <zongfen>2225</zongfen>
</xuesheng>
</xueshengmen>
</AllData>

 

用php来实现:

复制代码代码如下:

<?php
$doc = new DOMDocument();
$doc->load( ‘stu.xml’ );
  $students = $doc->getElementsByTagName( “xuesheng” );
  foreach($students as $stu){
  $yuwen = $stu->getElementsByTagName( “yuwen”
)->item(0)->nodeValue;
  $shuxue = $stu->getElementsByTagName( “shuxue”
)->item(0)->nodeValue;
  $yingyu = $stu->getElementsByTagName( “yingyu”
)->item(0)->nodeValue;
  $zongfen = $stu->getElementsByTagName( “zongfen”
)->item(0)->nodeValue;
  if($zongfen){
   echo “节点已经存在了,不再添加!”;
   continue;
  }
  $zongfen = $yuwen+$shuxue+$yingyu;
  $newNode = $doc->createElement(“zongfen”,$zongfen);
  $stu->appendChild($newNode);
  }
 $result = $doc->saveXML(‘stu.xml’);
?>

 

php添加数码到xml文件中

时间:2015-12-17 06:30:37来源:网络

导读:php添加数据到xml文件中

 

xml文件:stu.xml:

复制代码代码如下:

<?xml version=”1.0″ encoding=”utf-8″ ?>
<AllData>
4858.com ,<xueshengmen>
<xuesheng>
  <name>张三</name>
  <yuwen>80</yuwen>
  <shuxue>90</shuxue>
  <yingyu>70</yingyu>
</xuesheng>
<xuesheng>
  <name>李四</name>
  <yuwen>60</yuwen>
  <shuxue>90</shuxue>
  <yingyu>75</yingyu>
</xuesheng>
</xueshengmen>
</AllData>

以上文件stu.xml提供了一部分学生数量。
当今亟需在每个xuesheng的节点里面添加一个zongfen的特性并且它的值等于yuwen+shuxue+yingyu的值
正如所示:

复制代码代码如下:

<?xml version=”1.0″ encoding=”utf-8″ ?>
<AllData>
<xueshengmen>
<xuesheng>
  <name>张三</name>
  <yuwen>80</yuwen>
  <shuxue>90</shuxue>
  <yingyu>70</yingyu>
  <zongfen>240</zongfen>
</xuesheng>
<xuesheng>
  <name>李四</name>
  <yuwen>60</yuwen>
  <shuxue>90</shuxue>
  <yingyu>75</yingyu>
  <zongfen>2225</zongfen>
</xuesheng>
</xueshengmen>
</AllData>

 

用php来实现:

复制代码代码如下:

<?php
$doc = new DOMDocument();
$doc->load( ‘stu.xml’ );
  $students = $doc->getElementsByTagName( “xuesheng” );
  foreach($students as $stu){
  $yuwen = $stu->getElementsByTagName( “yuwen”
)->item(0)->nodeValue;
  $shuxue = $stu->getElementsByTagName( “shuxue”
)->item(0)->nodeValue;
  $yingyu = $stu->getElementsByTagName( “yingyu”
)->item(0)->nodeValue;
  $zongfen = $stu->getElementsByTagName( “zongfen”
)->item(0)->nodeValue;
  if($zongfen){
   echo “节点已经存在了,不再添加!”;
   continue;
  }
  $zongfen = $yuwen+$shuxue+$yingyu;
  $newNode = $doc->createElement(“zongfen”,$zongfen);
  $stu->appendChild($newNode);
  }
 $result = $doc->saveXML(‘stu.xml’);
?>

 

正文实例讲述了DOM基础及php读取xml内容操作的主意。分享给我们供我们参考。具体分析如下:

要处理 XML 文件,有三种价值观的拍卖思路: SAX 和 DOM 。 SAX
基于事件触发机制,对 XML 文件举办三遍扫描,达成要举行的处理; DOM
则将所有 XML 文件构造为一棵 DOM树,通过对 DOM
树的遍历达成处理。那二种办法各有利弊, SAX 的处理思路相对抽象,DOM
的处理进程相对繁琐,都不很合乎新手的入门。PHP5 推出了一套新的 XML
处理函数,即 SimpleXML 。名如其实, SimpleXML
本身小巧精干,只提供了少量的多少个主意函数,但用它处理起 XML
文件作用却万分强大,操作也相当的简约。

连锁小说

  • PHP操作XML的类DOMDocument
  • php生成不难的xml文件
  • PHP生成xml文件的实例代码学习

连锁小说

  • PHP操作XML的类DOMDocument
  • php生成简单的xml文件
  • PHP生成xml文件的实例代码学习

DOM(Document Object
Model):文档对象模型。宗旨绪想是:把
xml文件作为是一个对象模型,然后经过对象的章程来操作 xml 文件。

一,什么是xml,xml有如何用场

php对xml文档举办增删改查(curd)操作,具体分析如下:

XML(Extensible 马克up
Language)即可扩大标记语言,它与HTML一样,都是SGML(Standard Generalized
马克up
Language,标准通用标记语言)。Xml是Internet环境中跨平台的,信赖于内容的技能,是现阶段处理结构化文档新闻的强硬工具。扩张标记语言XML是一种简易的数目存储语言,使用一文山会海简单的标志描述数据,而这一个标记可以用方便的办法确立,即便XML占用的空间比二进制数据要占用越来越多的上空,但XML极其简约不难明白和使用。
XML的用途很多,可以用来存储数据,可以用来做数据互换,为很种种采取软件提示数据等等。

xml文档:class.xml

二,php读取xml的方法

复制代码 代码如下:

xml源文件
 

<?xml version=”1.0″ encoding=”utf-8″?>
<class>
 <student info=”美女”>
  <name>小乔</name>
  <sex>女</sex>
  <age>20</age>
 </student>
 <student>
  <name>周瑜</name>
  <sex>男</sex>
  <age>25</age>
 </student>
</class>

 代码如下

class.xml 对应的 DOM 树结构图

<?xml version=”1.0″ encoding=”UTF-8″?> 
  <humans> 
  <zhangying> 
  <name>张映</name> 
  <sex>男</sex> 
  <old>28</old> 
  </zhangying> 
  <tank> 
  <name>tank</name> 
  <sex>男</sex> 
  <old>28</old> 
  </tank> 
  </humans> 

4858.com 1

1)DOMDocument读取xml
 

php文件(对xml文档操作)

 代码如下

查询操作案例:

  <?php 
  $doc = new DOMDocument(); 
  $doc->load(‘person.xml’);         //读取xml文件 
   
  $humans = $doc->getElementsByTagName( “humans” );        
//取得humans标签的目标数组 
 
  foreach( $humans as $human

  { 
  $names = $human->getElementsByTagName( “name” );          
//取得name的价签的靶子数组 
  $name =
$names->item(0)->nodeValue;                                       
//取得node中的值,如<name> </name> 
   
  $sexs = $human->getElementsByTagName( “sex” ); 
  $sex = $sexs->item(0)->nodeValue; 
  
  $olds = $human->getElementsByTagName( “old” ); 
  $old = $olds->item(0)->nodeValue; 
  
  echo “$name – $sex – $old\n”; 
  
  } 
  ?> 

复制代码 代码如下:

2)simplexml读取xml
 

<?php
//1、创建一个DOMDocument对象。该对象就代表 xml文件
$xmldoc = new DOMDocument();
//2、加载xml文件(指定要分析哪个xml文件,此时dom树节点就会加载到内存中)
$xmldoc->load(“class.xml”);
//3、目的:获取第三个学生的名字
//3.1 第一步,读取所有的学童
$students =
$xmldoc->getElementsByTagName(“student”);//方法getElementsByTagName:根据所给的节点名字(那里是student)查找
相应的节点,再次来到DOMNodeList类型的靶子,相当于取出了富有的学员。可以用var_dump($students)查看,并按照重返值查找手册,看其下部的属性与艺术。
echo “共有 “.$students->length.”个学生<br />”;

 代码如下

//3.2 读取第四个学生
$stu1 =
$students->item(0);//读取到第二个学生。重返值为DOMElement对象。直接echo $stu1->nodeValue;则把name,sex,age都输出。
//3.3 取出第三个学生的名字
$stu1_name = $stu1->getElementsByTagName(“name”);
//3.4 读取到名字
echo $stu1_name->item(0)->nodeValue;
?>

<?php 
$xml_array=simplexml_load_file(‘person.xml’);                       
//将XML中的数据,读取到数组对象中 
 
foreach($xml_array as $tmp){ 
 echo
$tmp->name.”-“.$tmp->sex.”-“.$tmp->old.”<br>”;    

 
?> 

注意点:

3)用php正则表明式来记取数据
 

(1)编码难点;
(2)这里只是基础演示,相比费心,后边用到循环和函数来操作;
(3)用var_dump(),查看变量的重回值是怎么着,再根据重回值到手册中寻找该再次回到值下的性质与方法。
(4)整个顺序下来,getElementByTagName()并不须要一层一层的读,事实上可以直接读取到节点name的,而不须求先读取student(当然,若是同一个student下,有多少个name,就会出标题了,那里就须要上学新的知识点xpath)。

 代码如下

因而地点这代码可以大概改为:

<?php 
  $xml = “”; 
  $f = fopen(‘person.xml’,
‘r’); 
  while( $data = fread( $f, 4096 ) ) { 
   $xml .= $data; 
  } 
  fclose( $f ); 
  // 上边读取数据 
  preg_match_all(
“/\<humans\>(.*?)\<\/humans\>/s”, $xml, $humans
);       //匹配最外层标签里面的情节 
   
  foreach( $humans[1] as $k=>$human ) 
  { 
   preg_match_all( “/\<name\>(.*?)\<\/name\>/”,
$human, $name );             //匹配出名字 
   preg_match_all( “/\<sex\>(.*?)\<\/sex\>/”,
$human, $sex );                        //匹配出性别 
   preg_match_all( “/\<old\>(.*?)\<\/old\>/”,
$human, $old );                        //匹配出年龄 
  } 
 
 foreach($name[1] as $key=>$val){ 
  echo $val.” – “.$sex[$key][1].” – “.$old[$key][1].”<br>”

 } 
?> 

复制代码 代码如下:

4)xmlreader来读取xml数据
 

<?php
//1、成立一个DOMDocument对象。该目标就象征 xml文件
$xmldoc = new DOMDocument();
//2、加载xml文件(指定要分析哪个xml文件,此时dom树节点就会加载到内存中)
$xmldoc->load(“class.xml”);
//3、目的:获取第二个学生的名字
$stu = $xmldoc->getElementsByTagName(“name”);//直接找到节点name
$stu1 = $stu->item(0);// item(1)时,可以取到周公瑾
echo $stu1->nodeValue;
?>

 代码如下

盼望本文所述对大家的php操作XML程序设计有着协助。

<?php 
$reader = new XMLReader(); 
$reader->open(‘person.xml’);                                                    
//读取xml数据 
$i=1; 
while ($reader->read())
{                                                             
//是还是不是读取 
 if ($reader->nodeType == XMLReader::TEXT) {              
//判断node类型 
  if($i%3){ 
   echo
$reader->value;                                                                 
//取得node的值 
  }else{ 
   echo $reader->value.”<br>” ; 
  } 
  $i++; 
 } 

?> 

您可能感兴趣的小说:

  • PHP XML操作类DOMDocument
  • php中DOMDocument简单用法示例代码(XML创造、添加、删除、修改)
  • php中运用DOM类读取XML文件的兑现代码
  • PHP5中采纳DOM控制XML已毕代码
  • php中DOMElement操作xml文档实例演示
  • 用PHP读取和编制XML
    DOM的落到实处代码
  • 运用PHP
    DOM-XML创制和平解决析XML文件
  • 用PHP落成读取和编排XML
    DOM代码
  • php基于dom达成读取图书xml格式数据的措施
  • PHP基于DOM创制xml文档的艺术言传身教
  • PHP完结选择DOM将XML数据存入数组的方法言传身教

 

使用 DOMDocument 操控 XML

  1. DOMDocument 解析 XML

 代码如下

// 成立一个 DOMDocument()

$_doc = new DOMDocument();

// 载入 xml

$_doc ->load( ‘test.xml’ );

// 取 version 标签

$_version = $_doc ->getElementsByTagName( ‘version’ );

echo $_version ->item( 2 )->nodeValue;

// 遍历 version 标签

foreach ( $_version as $v ) {

echo $v ->nodeValue;

}

  1. DOMDocument 生成 XML

// 声明 xml

$_doc = new DOMDocument( ‘1.0’ , ‘utf-8’ );

// 排版格式

$_doc ->formatOutput = true ;

// 创造一个主标签

$_root = $_doc ->createElement( ‘root’ );

// 创制一个超级标签 version

$_version = $_doc ->createElement( ‘version’ );

// 给 version 标签里赋值

$_versionTextNode = $_doc ->createTextNode( ‘1.0’ );

// 将值放入 version 标签里

$_version ->appendChild( $_versionTextNode );

// 将一流标签 version 放入 root 里

$_root ->appendChild( $_version );

// 将主标签写入 xml

$_doc ->appendChild( $_root );

// 生成 xml

$_doc ->save( ‘aaa.xml’ );

洋洋状态下 , 手工生成标志要求从上到下生成文档 , 必须有限帮助标签都是一体化的
, 开端和得了标签。即便借助于一些 PHP 函数或类能够有所改良,可是 PHP
还提供了一组更有帮带的放到对象和函数。文档对象模型( Document Object
Model , DOM )提供了一个树状结构,能很不难创立和处理标签。

三,小结

读取xml的方式很多,简单举多少个。上边各类艺术都是可以把标签中的数据读出来,<name>张映</name>.但是他俩的测重点不一样,前二种方法的读取xml的function的规划重点,是为着读取标签中的值,约等于jquery中的text()方法,而xmlreader呢他就不太一致,他的重大不在读取标签中的值,而读取标签的特性,把要传送的数据,都置身属性中(可是自己下面写的相当格局照旧取标签中的值,因为xml文件已经给定了,我就不想在搞xml文件出来了)。举个例子解释一下,
<data name=’张映’  sex=’男’ old=’28’></data>
xmlreader的筹划重点是为了读data里面的name sex
old的值,而读取<data></data>的内容就比较劳累了。他一定于jquery中attr(”);那个事物。

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图
Copyright @ 2010-2019 美高梅手机版4858 版权所有