php对xml文件进行CURD操作
XML是一种数据存储、交换、表达的标准:
- 交换:可以通过schema实现异构数据集成;
- 表达:本身就可以作为阅读文档,当然还可以使用XSLT之类的进行解析和再显示。
缺点是schema验证复杂,相比后来的json等格式,相对冗余。
下面的是利用php对xml文件进行CURD操作:
xml文件的格式为:
<?xml version="1.0" encoding="utf-8"?>
<config>
<dbmsg type="mysql">
<host>127.0.0.1</host>
<port>3306</port>
<user>root</user>
<password>root123</password>
<db>ksuditest</db>
</dbmsg>
<env>
<testenv>测试环境</testenv>
<projectenv>正式环境</projectenv>
</env>
</config>
1、用三种方法读取xml文件内容:
<?php
/**
* 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')."<br>";
echo 'port-->'.getNodeValue($dbmsg,'port')."<br>";
echo 'user-->'.getNodeValue($dbmsg,'user')."<br>";
echo 'password-->'.getNodeValue($dbmsg,'password')."<br>";
echo 'db-->'.getNodeValue($dbmsg,'db')."<br>";
*/ // ---------------第二种方法--------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')."<br>";
echo 'port-->'.getNodeValue($dbmsg,'port')."<br>";
echo 'user-->'.getNodeValue($dbmsg,'user')."<br>";
echo 'password-->'.getNodeValue($dbmsg,'password')."<br>";
echo 'db-->'.getNodeValue($dbmsg,'db')."<br>";
*/
// ---------------第三种方法--------SimpleXML---------------------
$sipleXml = simplexml_load_file('config.xml');
/*
echo 'db type==>'.$sipleXml->dbmsg['type']."<br>";
echo $sipleXml->dbmsg->host."<br>";
echo $sipleXml->dbmsg->port."<br>";
echo $sipleXml->dbmsg->user."<br>";
echo $sipleXml->dbmsg->password."<br>";
echo $sipleXml->dbmsg->db."<br>";
*/
// siplexml配合xpath使用
$dbmsg = $sipleXml->xpath("//dbmsg")[0];
// 打印dbmsg的数据
// 打印dbmsg的属性
echo 'db type==>'.$dbmsg['type']."<br>";
// 打印
echo $dbmsg->host."<br>";
echo $dbmsg->port."<br>";
echo $dbmsg->user."<br>";
echo $dbmsg->password."<br>";
echo $dbmsg->db."<br>";
2、向xml文件中添加:
<?php
/**
* 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文件:
<?php
/**
* 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文件进行删除操作:
<?php
/**
* 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!';
php对xml文件进行CURD操作的更多相关文章
- 【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 <QtXml>, ...
- 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 ...
随机推荐
- 首届Ignite China微软技术大会见闻
10.26-10.28,有幸参加微软在中国北京举办的首届Ignite China技术大会.世界那么大,技术那么多,我想去看看. 为期三天的技术大会在小汤山九华山庄举办,吐槽一下,太特么远了,每天要跑3 ...
- 一种基于Orleans的分布式Id生成方案
基于Orleans的分布式Id生成方案,因Orleans的单实例.单线程模型,让这种实现变的简单,贴出一种实现,欢迎大家提出意见 public interface ISequenceNoGenerat ...
- 第三波假期干货——webstrom工具栏图标
在WS中使用工具栏上的快捷图标来配合工作可以有效提高效率,因为你不用去记住一些快捷键,只要点一下鼠标即可.不过在WS中有很多实用功能却是没有自带个性图标的,导致自定义工具栏后可能就是好几个一模一样的绿 ...
- sublime 2/3 for mac link to command
Sublime command for mac : execute those command: subl 2: sudo ln -s /Applications/Sublime\ Text\ 2.a ...
- 基于正则的INI读写工具类,支持加密解密
看到这个标题,有人会问,现在都用xml做配置文件了,谁还用INI文件啊!下面来简单对比一下xml和ini: 1.XML功能强大表达能力强,同时扩展性好. 2.它的主要优势是异构平台的整合.通讯. 3. ...
- 来看看Windows9到底是什么
今天有新闻一直在说windows 8.2 windows9,还给出了一张很有趣的图 我们就假设这张图是真的. 这张图透漏出两个信息 其一:开始菜单真的回来了. 不过还是不死心,绝不放弃开始屏,确实,开 ...
- [异常解决] 初玩SAE遇到的小问题——注册&创建项目+MyEclipse装插件直接部署+一个简单的JSP部署实现
① 新浪SAE快速上手教程:http://jingyan.baidu.com/season/43090 上面一个链接是针对PHP的相关介绍,如果用java还有点不一样,具体请看新浪SAE官网:http ...
- 细说.NET中的多线程 (三 使用Task)
上一节我们介绍了线程池相关的概念以及用法.我们可以发现ThreadPool. QueueUserWorkItem是一种起了线程之后就不管了的做法.但是实际应用过程,我们往往会有更多的需求,比如如果更简 ...
- spring源码分析(二)Aop
创建日期:2016.08.19 修改日期:2016.08.20-2016.08.21 交流QQ:992591601 参考资料:<spring源码深度解析>.<spring技术内幕&g ...
- jq源码立即执行函数的undefined参数
函数参数是undefined,那这个undefined是个变量标识符还是值呢? <JS权威指南>函数一章讲过,未给函数形参传值的时候,该形参的值是undefined.所以形参undefin ...