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 ...
随机推荐
- SQL Server Profiler使用教程,通俗易懂才是王道
做开发,平时难免和数据库打交道,特别是写存储过程,对于我们这些不常写SQL的人来说是一件极其痛苦的事,每次写完运行总是有错,如果用的是本地数据库的话还好,可以在本机调试SQL,那如果在数据库在服务器上 ...
- html5 css3实现图中结构
<!DOCTYPE html> <html lang="en" > <head> <title>demo</title> ...
- OpenSSL密码算法库: MD5示例小程序
OpenSSL http://www.openssl.org/ OpenSSL整个软件包大概可以分成三个主要的功能部分:密码算法库.SSL协议库以及应用程序.OpenSSL 的密码算法库包含多种加密算 ...
- 如何在施工物料管理Web系统中处理大量数据并显示
最近在开发施工物料管理系统,其中涉及大量的物料信息需要管理和汇总,数据量非常庞大.之前尝试自己通过将原始数据,加工处理建模,在后台代码中通过分组.转置再显示到 Web 页面中,但自己编写的代码量非常大 ...
- [备忘]删除SQL Server中无登录名的用户
这个问题通常会在还原虚拟主机的备份SQL文件后发生,原先在虚拟主机上的用户会被还原到本地,但是本地没有权限对其进行操作. SELECT N'ALTER AUTHORIZATION ON SCHEMA: ...
- vim添加或删除多行注释
一.多行注释的添加 1. vim的命令模式下(ESC 进入命令模式): 2. 按CTRL+V进入可视化模式(VISUAL BLOCK): 注意:vim命令模式下v进入的是visual模式,ctrl+v ...
- jmx : ClientCommunicatorAdmin Checker-run
今天遇到一个问题: 执行bat,关闭jmx的时候,由于程序关闭之后又去连接了一次,cmd窗口报错,类似: 2013-7-11 15:58:05 ClientCommunicatorAdmin rest ...
- Oracle查询DQL脚本记录
--查询列 Select t.sname,t.ssex,t.class from student t --t 别名; Select *from student t; --* 代表查询表内所有数据 '; ...
- WebApi系列~基于单请求封装多请求的设计
回到目录 怎么说,单请求封装多请求,这句话确实有点绕了,但还是要看清楚,想明白这到底是怎么一回事,单请求即一次请求(get,post,put,delete),封闭多请求,即在客户端发送的一个请求中可能 ...
- salesforce 零基础学习(二十八)使用ajax方式实现联动
之前的一篇介绍过关于salesforce手动配置关联关系实现PickList的联动效果,但是现实的开发中,很多数据不是定死的,应该通过ajax来动态获取,本篇讲述通过JavaScript Remoti ...