php对xml文件进行CURD操作

  XML是一种数据存储、交换、表达的标准:

    - 存储:优势在于半结构化,可以自定义schema,相比关系型二维表,不用遵循第一范式(可以有嵌套关系);
    - 交换:可以通过schema实现异构数据集成;
    - 表达:本身就可以作为阅读文档,当然还可以使用XSLT之类的进行解析和再显示。

    缺点是schema验证复杂,相比后来的json等格式,相对冗余。

 下面的是利用php对xml文件进行CURD操作:

xml文件的格式为:

 1 <?xml version="1.0" encoding="utf-8"?>
 2 <config>
 3     <dbmsg type="mysql">
 4         <host>127.0.0.1</host>
 5         <port>3306</port>
 6         <user>root</user>
 7         <password>root123</password>
 8         <db>ksuditest</db>
 9     </dbmsg>
10     <env>
11         <testenv>测试环境</testenv>
12         <projectenv>正式环境</projectenv>
13     </env>
14 </config>

1、用三种方法读取xml文件内容:

 1 <?php
 2 /**
 3  * Created by PhpStorm.
 4  * User: xxx
 5  * Date: 2016/11/28
 6  * Time: 9:36
 7  */
 8 // 使用三种方法来读取xml文件
 9 // 封装获取某一个节点,下面节点的value
10 function getNodeValue($nodeName,$tagName){
11     return $nodeName->getElementsByTagName($tagName)->item(0)->nodeValue;
12 }
13
14 // ---------------第一种方法-----DOM------------------------
15 /*
16 $xmlDoc = new DOMDocument();
17 // 加载xml文件
18 $xmlDoc->load(‘config.xml‘);
19 // 获取dbmsg节点
20 $dbmsg = $xmlDoc->getElementsByTagName(‘dbmsg‘)->item(0);
21 // 打印db的相关信息
22 echo ‘host-->‘.getNodeValue($dbmsg,‘host‘)."<br>";
23 echo ‘port-->‘.getNodeValue($dbmsg,‘port‘)."<br>";
24 echo ‘user-->‘.getNodeValue($dbmsg,‘user‘)."<br>";
25 echo ‘password-->‘.getNodeValue($dbmsg,‘password‘)."<br>";
26 echo ‘db-->‘.getNodeValue($dbmsg,‘db‘)."<br>";
27 */
28
29 // ---------------第二种方法--------XPATH---------------------
30 /*
31 $xmlDoc = new DOMDocument();
32 // 加载xml文件
33 $xmlDoc->load(‘config.xml‘);
34 // 实例化一个DOMXPath对象
35 $xpath = new DOMXPath($xmlDoc);
36 // 获取dbmsg节点,使用xpath来查询
37 $dbmsg = $xpath->query(‘//dbmsg‘)->item(0);
38 // 打印db的相关信息
39 echo ‘host-->‘.getNodeValue($dbmsg,‘host‘)."<br>";
40 echo ‘port-->‘.getNodeValue($dbmsg,‘port‘)."<br>";
41 echo ‘user-->‘.getNodeValue($dbmsg,‘user‘)."<br>";
42 echo ‘password-->‘.getNodeValue($dbmsg,‘password‘)."<br>";
43 echo ‘db-->‘.getNodeValue($dbmsg,‘db‘)."<br>";
44 */
45 // ---------------第三种方法--------SimpleXML---------------------
46 $sipleXml = simplexml_load_file(‘config.xml‘);
47 /*
48 echo ‘db type==>‘.$sipleXml->dbmsg[‘type‘]."<br>";
49 echo $sipleXml->dbmsg->host."<br>";
50 echo $sipleXml->dbmsg->port."<br>";
51 echo $sipleXml->dbmsg->user."<br>";
52 echo $sipleXml->dbmsg->password."<br>";
53 echo $sipleXml->dbmsg->db."<br>";
54 */
55 // siplexml配合xpath使用
56 $dbmsg = $sipleXml->xpath("//dbmsg")[0];
57 // 打印dbmsg的数据
58 // 打印dbmsg的属性
59 echo ‘db type==>‘.$dbmsg[‘type‘]."<br>";
60 // 打印
61 echo $dbmsg->host."<br>";
62 echo $dbmsg->port."<br>";
63 echo $dbmsg->user."<br>";
64 echo $dbmsg->password."<br>";
65 echo $dbmsg->db."<br>";

2、向xml文件中添加:

 1 <?php
 2 /**
 3  * Created by PhpStorm.
 4  * User: xxx
 5  * Date: 2016/11/28
 6  * Time: 11:12
 7  */
 8 $xmlDoc = new DOMDocument();
 9 $xmlDoc->load("config.xml");
10 // 根目录
11 $config = $xmlDoc->getElementsByTagName("config")->item(0);
12 // 创建testenv节点
13 $env = $xmlDoc->createElement("env");
14
15 // 创建testenv
16 $testenv = $xmlDoc->createElement("testenv");
17 $testenv->nodeValue = ‘测试环境‘;
18 $env->appendChild($testenv);
19
20 // 创建正式环境 projectenv
21 $projectenv = $xmlDoc->createElement("projectenv");
22 $projectenv->nodeValue = ‘正式环境‘;
23 $env->appendChild($projectenv);
24
25 // 挂载env到config节点下
26 $config->appendChild($env);
27 // 保存xml文件
28 $xmlDoc->save(‘config.xml‘);
29
30 echo "add message success!";

3、更新xml文件:

 1 <?php
 2 /**
 3  * Created by PhpStorm.
 4  * User: xxx
 5  * Date: 2016/11/28
 6  * Time: 10:56
 7  */
 8 // 更新xml节点的数据
 9
10 $xmlDoc = new DOMDocument();
11 $xmlDoc->load("config.xml");
12
13 // 修改密码
14 $xpath = new DOMXPath($xmlDoc);
15 $pwd = $xpath->query(‘//password‘)->item(0);
16 $pwd->nodeValue = ‘root123‘;
17
18 //save xml file
19 $xmlDoc->save("config.xml");
20 echo "update message success!";

4、对xml文件进行删除操作:

 1 <?php
 2 /**
 3  * Created by PhpStorm.
 4  * User: xxx
 5  * Date: 2016/11/28
 6  * Time: 13:54
 7  */
 8 // 删除xml中的节点
 9 $xmlDoc = new DOMDocument();
10 $xmlDoc->load("config.xml");
11
12 // 删除最后一个env节点
13 $envs = $xmlDoc->getElementsByTagName(‘env‘);
14 // 找到最后一个env节点
15 $delenv = $envs->item($envs->length-1);
16 // 移除delenv节点
17 $delenv->parentNode->removeChild($delenv);
18
19 // save xml file
20 $xmlDoc->save("config.xml");
21 echo ‘delete success!‘;
时间: 2024-10-12 15:57:30

php对xml文件进行CURD操作的相关文章

java代码用dom4j解析xml文件的简单操作

时间: 2016/02/17 目标:为telenor的ALU Femto接口写一个采集xml文件并解析出locationName标签里的值,然后更新到数据库中. 从网上搜了下,有四种常用的解析xml的方式,包括DOM,JAXD,Dom4J,SAX(simple api for xml).我正好有Dom4j的jar包,就选择了Dom4j来解析xml. 前半截对xml的解析测试成功了.后面的数据库的连接,把数据更新到数据库的操作没有测试.对应的xml文件的行数有点多,没法上传,另写一个xml的文档上

XML文件的一些操作

XML 是被设计用来传输和存储数据的, XML 必须含有且仅有一个 根节点元素(没有根节点会报错) 源码下载 http://pan.baidu.com/s/1ge2lpM7 好了,我们 先看一个 XML 文件(Cartoon.xml) <?xml version="1.0" encoding="utf-8"?> <Cartoon> <Character Company="DC"> <Name>超人&

Xml文件的相关操作

Xml文档很久没有用过了,今天开开鲜,新手专区,不喜勿喷,运用的是WinForm编写 XMl文件的创建 /// <summary> /// 创建Xml文件 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void btnCreateXml_Click(object send

java对XML文件的相关操作(dom4j)

1 <?xml version="1.0" encoding="UTF-8"?> 2 3 <Person university="SCAU" location="GuangZhou"> 4 <student> 5 <name>tester1</name> 6 </student> 7 <student> 8 <name/>teste

dom4j解析XML的CURD操作

在开发JavaWeb项目中通常是利用XML配置文件来提高应用程序的访问效率,而在配置XML的同时,更多时候是对XML进行解析. 一.解析XML配置文件有两种机制: DOM和SAX的机制: DOM是将整个XML文件读到内容,形成一个倒状的树形结构. SAX是一个一个的将XML文件中的元素加载的内存,不会形成一个倒状的树形结构. 常用dom4j的api: 主要使用到SAXReader类 SAXReader:表示DOM4J解析器 saxReader.read():加载需要解析的xml文件,返回docu

利用XmlDocument操作XML文件

利用XmlDocument可以方便的操作XML文件. 1.操作XML文件基本方法 (1)添加对System.Xml的引用,并使用using语句添加引用: (2)假设要读取的XML文件如下: <?xml version="1.0" encoding="utf-8"?> <Students> <Student> <Name>张靓靓</Name> <Age>20</Age> <Hob

Spring Batch 简单应用 (三)(XML文件操作)

前篇关于Spring Batch的文章,讲述了Spring Batch 对CSV文件的读写操作. 本文将通过一个完整的实例,与大家一起讨论运用Spring Batch对XML文件的读写操作.实例流程是从一个XML文件中读取商品信息,经过简单的处理,写入另外一个XML文件中. 工程结构如下图: log4j.xml是log处理的配置文件,与本文没有必然联系,再此不做论述. application.xml文件内容如下: 按 Ctrl+C 复制代码 <?xml version="1.0"

springbatch操作XML文件

一.需求分析 使用Spring Batch对XML文件进行读写操作: 从一个xml文件中读取商品信息, 经过简单的处理, 写入另外一个xml文件中. 二.代码实现 1. 代码结构图: 2. applicationContext.xml <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans"

c#操作XML文件的通用方法

c#操作XML文件的通用方法 本文导读:我们在编写C#程序时,经常会通过C#访问XML文件,实现对XML文档的读写操作.下面为大家列出了通用的调用方法,大家可以将这些方法放在共用类里,其它的程序共享调用就可以了. 下面通过一个类将我们平时用c#操作XML文件的通用方法详细的介绍一下,关于asp.net C#操作xml文档实现代码,大家可以参考参考. c# 代码 1 sing System; 2 using System.Data; 3 using System.Configuration; 4