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 ...