php更新xml文件,php对xml文件进行CURD操作

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

- 存储:优势在于半结构化,可以自定义schema,相比关系型二维表,不用遵循第一范式(可以有嵌套关系);

- 交换:可以通过schema实现异构数据集成;

- 表达:本身就可以作为阅读文档,当然还可以使用XSLT之类的进行解析和再显示。

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

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

xml文件的格式为:

127.0.0.1

3306

root

root123

ksuditest

测试环境

正式环境

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

/**

* Created by PhpStorm.

* User: xxx

* Date: 2016/11/28

* Time: 9:36

*/

// 使用三种方法来读取xml文件

// 封装获取某一个节点,下面节点的value

function getNodeValue($nodeName,$tagName){

return $nodeName->getElementsByTagName($tagName)->item(0)->nodeValue;

}

// ---------------第一种方法-----DOM------------------------

/*

$xmlDoc = new DOMDocument();

// 加载xml文件

$xmlDoc->load('config.xml');

// 获取dbmsg节点

$dbmsg = $xmlDoc->getElementsByTagName('dbmsg')->item(0);

// 打印db的相关信息

echo 'host-->'.getNodeValue($dbmsg,'host')."
";

echo 'port-->'.getNodeValue($dbmsg,'port')."
";

echo 'user-->'.getNodeValue($dbmsg,'user')."
";

echo 'password-->'.getNodeValue($dbmsg,'password')."
";

echo 'db-->'.getNodeValue($dbmsg,'db')."
";

*/

// ---------------第二种方法--------XPATH---------------------

/*

$xmlDoc = new DOMDocument();

// 加载xml文件

$xmlDoc->load('config.xml');

// 实例化一个DOMXPath对象

$xpath = new DOMXPath($xmlDoc);

// 获取dbmsg节点,使用xpath来查询

$dbmsg = $xpath->query('//dbmsg')->item(0);

// 打印db的相关信息

echo 'host-->'.getNodeValue($dbmsg,'host')."
";

echo 'port-->'.getNodeValue($dbmsg,'port')."
";

echo 'user-->'.getNodeValue($dbmsg,'user')."
";

echo 'password-->'.getNodeValue($dbmsg,'password')."
";

echo 'db-->'.getNodeValue($dbmsg,'db')."
";

*/

// ---------------第三种方法--------SimpleXML---------------------

$sipleXml = simplexml_load_file('config.xml');

/*

echo 'db type==>'.$sipleXml->dbmsg['type']."
";

echo $sipleXml->dbmsg->host."
";

echo $sipleXml->dbmsg->port."
";

echo $sipleXml->dbmsg->user."
";

echo $sipleXml->dbmsg->password."
";

echo $sipleXml->dbmsg->db."
";

*/

// siplexml配合xpath使用

$dbmsg = $sipleXml->xpath("//dbmsg")[0];

// 打印dbmsg的数据

// 打印dbmsg的属性

echo 'db type==>'.$dbmsg['type']."
";

// 打印

echo $dbmsg->host."
";

echo $dbmsg->port."
";

echo $dbmsg->user."
";

echo $dbmsg->password."
";

echo $dbmsg->db."
";

2、向xml文件中添加:

/**

* Created by PhpStorm.

* User: xxx

* Date: 2016/11/28

* Time: 11:12

*/

$xmlDoc = new DOMDocument();

$xmlDoc->load("config.xml");

// 根目录

$config = $xmlDoc->getElementsByTagName("config")->item(0);

// 创建testenv节点

$env = $xmlDoc->createElement("env");

// 创建testenv

$testenv = $xmlDoc->createElement("testenv");

$testenv->nodeValue = '测试环境';

$env->appendChild($testenv);

// 创建正式环境 projectenv

$projectenv = $xmlDoc->createElement("projectenv");

$projectenv->nodeValue = '正式环境';

$env->appendChild($projectenv);

// 挂载env到config节点下

$config->appendChild($env);

// 保存xml文件

$xmlDoc->save('config.xml');

echo "add message success!";

3、更新xml文件:

/**

* Created by PhpStorm.

* User: xxx

* Date: 2016/11/28

* Time: 10:56

*/

// 更新xml节点的数据

$xmlDoc = new DOMDocument();

$xmlDoc->load("config.xml");

// 修改密码

$xpath = new DOMXPath($xmlDoc);

$pwd = $xpath->query('//password')->item(0);

$pwd->nodeValue = 'root123';

//save xml file

$xmlDoc->save("config.xml");

echo "update message success!";

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

/**

* Created by PhpStorm.

* User: xxx

* Date: 2016/11/28

* Time: 13:54

*/

// 删除xml中的节点

$xmlDoc = new DOMDocument();

$xmlDoc->load("config.xml");

// 删除最后一个env节点

$envs = $xmlDoc->getElementsByTagName('env');

// 找到最后一个env节点

$delenv = $envs->item($envs->length-1);

// 移除delenv节点

$delenv->parentNode->removeChild($delenv);

// save xml file

$xmlDoc->save("config.xml");

echo 'delete success!';

【JAVA使用XPath、DOM4J解析XML文件,实现对XML文件的CRUD操作】

一.简介 1.使用XPath可以快速精确定位指定的节点,以实现对XML文件的CRUD操作. 2.去网上下载一个“XPath帮助文档”,以便于查看语法等详细信息,最好是那种有很多实例的那种. 3.学习X ...

【转】C#对XML文件的各种操作实现方法

[转]C#对XML文件的各种操作实现方法 原文:http://www.jb51.net/article/35568.htm XML:Extensible Markup Language(可扩展标记语言 ...

【JAVA解析XML文件实现CRUD操作】

一.简介. 1.xml解析技术有两种:dom和sax 2.dom:Document Object Model,即文档对象模型,是W3C组织推荐的解析XML的一种方式. sax:Simple API f ...

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

时间: 2016/02/17 目标:为telenor的ALU Femto接口写一个采集xml文件并解析出locationName标签里的值,然后更新到数据库中. 从网上搜了下,有四种常用的解析xml的 ...

XML文件的一些操作

XML 是被设计用来传输和存储数据的, XML 必须含有且仅有一个 根节点元素(没有根节点会报错) 源码下载 http://pan.baidu.com/s/1ge2lpM7 好了,我们 先看一个 XM ...

xml文件的读写操作

1.直接上代码:包含了xml文档的创建,读取xml文档,创建根节点,向根节点中添加子节点,保存xml文档----------先来张效果图: static void Main(string[] args ...

Qt5 对xml文件常用的操作(读写,增删改查)

转自:https://blog.csdn.net/hpu11/article/details/80227093 项目配置 pro文件里面添加QT+=xml include , ...

dom4j解析XML的CURD操作

在开发JavaWeb项目中通常是利用XML配置文件来提高应用程序的访问效率,而在配置XML的同时,更多时候是对XML进行解析. 一.解析XML配置文件有两种机制: DOM和SAX的机制: DOM是将整 ...

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

转载地址:http://www.studyofnet.com/news/36.html 原址没找到 sing System; using System.Data; using System.Confi ...

随机推荐

移动端页头推荐配置 出现找不到favicon.ico错误原因和解决方法

favicon 在未指定 favicon 时,大多数浏览器会请求 Web Server 根目录下的 favicon.ico .为了保证 favicon 可访问,避免404,必须遵循以下两种方法之一: ...

js 标签云效果

下载:http://files.cnblogs.com/zjfree/js_tag_list.rar 效果如下: 源码如下:

如何评价微信小程序?

这次我不站张小龙,虽然他说的「用完即走」的道理在,但我并不认为小程序会形成生态. (一) 仅仅从抽象场景上来讲,小程序当然很美好. 对开发者来说,不用费尽心思开发好多平台的 APP 了,不用考虑适配各 ...

bzoj 3626 LCA

这一道题咋一看只觉得是离线,可以求出所有的f(1,i,z), 答案就等于f(1,r,z)-f(1,l-1,z).但是没有具体的做法,但是求LCA的深度和有一个非常巧妙的做法,每加一个点,就把这个点到根 ...

时间处理总结(二)oracle

不断总结中................. 1.等于land.djsj=to_date('2016/7/26','yyyy-MM-dd')2.大于等于land.djsj>=to_date('2 ...

linux下文件编码的查看与转换(转)

通常来说,Windows中默认的文件格式是GBK(gb2312),而Linux一般都是UTF-8,所以Linux下打开windows的文件会有乱码的情况.另外,有时要将文件进行编码转换,如将简体中文转 ...

关于C函数的参数个数的问题

本文引自:http://c.biancheng.net/cpp/html/1592.html 一个函数的参数的数目没有明确的限制,但是参数过多(例如超过8个)显然是一种不可取的编程风格.参数的数目直接 ...

jQuery点击按钮实现div的隐藏和显示切换效果

利用AndroidStudio开发java工程

1.新建一个project,或者如果你已经有project的话,那就直接新建一个module.注意选择Java library,然后下一步. 2.输入module的一些信息.点击finish.(在创建 ...

maven入门(1-1)maven是什么?

Maven是一个项目管理工具,它包含了 一个项目对象模型 (Project Object Model), 一组标准集合, 一个项目生命周期(Project Lifecycle), 一个依赖管理系统(D ...

你可能感兴趣的:(php更新xml文件)