php实现解析xml并生成sql语句的方法


Posted in PHP onFebruary 03, 2018

本文实例讲述了php实现解析xml并生成sql语句的方法。分享给大家供大家参考,具体如下:

php解析xml有很多种办法,文档中有,搜索一下就一大把的。

今天遇到一个需求:将某个xml中的节点属性提取出来,然后更新数据库某一表中的字段。

思路:

解析XML,获取所有的节点属性 ?> 循环节点集合,获取对应的属性 ?> 拼接sql字符串存入一数组 ?> 将数组转为字符串保存于某一文件中

这里使用了xpath,在写代码的过程中遇到两个问题:

1、xml的史路径属性为D:\xx\…时load不了文件,改为”/”(linux下的分隔符)就可以了

2、获取一个节点的属性,使用::attributes,编辑器就不停的红色提示,找到半天文档,最后用->getAttribute()就行了(猜的,因为太奇怪了,它支持->previousSibling和->nodeValue),按照,文档上的DOMElement::getAttribute直接就报错了..

php实现解析xml并生成sql语句的方法

下面是示例代码:

<title>xml 转换为 sql</title>
<meta http-equiv='content-type' content='text/html; charset=utf-8' />
<style type="text/css">
  .tip_info {margin-bottom:10px;}
  .tip_info span {color:#f00;}
</style>
<?php
$xml = "D:/res/dressConfig.xml";
$doc = new DOMDocument();
$doc->load($xml);
$xpath = new DOMXPath($doc);
$query = "//i";
$entries = $xpath->query($query);
$len = $entries->length;
echo "<div class='tip_info'>总共找到:<span>".$len."</span>个节点</div>";
$arr = array();
$idx = 0;
while ($idx < $len) {
  $nodeItem = $entries->item($idx);
  $id = $nodeItem->getAttribute("i");
  $name = $nodeItem->getAttribute("n");
  $inf = $nodeItem->getAttribute("inf");
//  echo "<div>".$id.'--'.$name.'--'.$inf."</div>";
  $idx++;
  array_push($arr, "update dress_item t SET t.s_name='".$name."',t.s_intro='".$inf."' WHERE t.n_doid=".$id.";");
}
$dir = "d:/sql/";
if (!is_dir($dir)) {
  mkdir($dir);
}
file_put_contents("d:/sql/dress_item.sql", implode("\n\r", $arr));
echo "生成完毕!";
?>

因为数据是从数据库表中生成出来的,所以找到的节点数即为表中的记录总数。生成后可以大概看一下内容是否正确,然后再执行该sql脚本便达到目的了。

PHP 相关文章推荐
php缓存技术介绍
Nov 25 PHP
PHP控制网页过期时间的代码
Sep 28 PHP
php Smarty初体验二 获取配置信息
Aug 08 PHP
php时间戳格式化显示友好的时间函数分享
Oct 21 PHP
yii添删改查实例
Nov 16 PHP
ThinkPHP框架搭建及常见问题(XAMPP安装失败、Apache/MySQL启动失败)
Apr 15 PHP
简单的自定义php模板引擎
Aug 26 PHP
php类自动装载、链式操作、魔术方法实现代码
Jul 23 PHP
jQuery ajax+PHP实现的级联下拉列表框功能示例
Feb 12 PHP
php新建文件的方法实例
Sep 26 PHP
安装PHP扩展时解压官方 tgz 文件后没有configure文件无法进行配置编译的问题
Aug 26 PHP
php array_map()函数实例用法
Mar 03 PHP
PHP删除数组中指定下标的元素方法
Feb 03 #PHP
php学习笔记之mb_strstr的基本使用
Feb 03 #PHP
php通过pecl方式安装扩展的实例讲解
Feb 02 #PHP
PHP实现对图片的反色处理功能【测试可用】
Feb 01 #PHP
php 删除一维数组中某一个值元素的操作方法
Feb 01 #PHP
基于php双引号中访问数组元素报错的解决方法
Feb 01 #PHP
PHP运用foreach神奇的转换数组(实例讲解)
Feb 01 #PHP
You might like
sourcesafe管理phpproj文件的补充说明(downmoon)
2009/04/11 PHP
Apache 配置详解(最好的APACHE配置教程)
2010/07/04 PHP
PHP实现XML与数据格式进行转换类实例
2015/07/29 PHP
php 多文件上传的实现实例
2016/10/23 PHP
Thinkphp通过一个入口文件如何区分移动端和PC端
2017/04/18 PHP
Laravel中validation验证 返回中文提示 全局设置的方法
2019/09/29 PHP
PHP重载基础知识回顾
2020/09/10 PHP
JS中confirm,alert,prompt函数使用区别分析
2010/04/01 Javascript
javascript URL编码和解码使用说明
2010/04/12 Javascript
js相册效果代码(点击创建即可)
2013/04/16 Javascript
jquery 实现密码框的显示与隐藏示例代码
2013/09/18 Javascript
使用angular写一个hello world
2015/01/23 Javascript
jQuery+css3实现Ajax点击后动态删除功能的方法
2015/08/10 Javascript
JS获取月份最后天数、最大天数与某日周数的方法
2015/12/08 Javascript
js判断是否是手机页面
2017/03/17 Javascript
anime.js 实现带有描边动画效果的复选框(推荐)
2017/12/24 Javascript
微信小程序中的video视频实现 自定义播放按钮、封面图、视频封面上文案
2020/01/02 Javascript
通过实例了解Javascript柯里化流程
2020/03/03 Javascript
Python3 正在毁灭 Python的原因分析
2014/11/28 Python
python中requests模块的使用方法
2015/04/08 Python
python线程池threadpool使用篇
2018/04/27 Python
pycharm 配置远程解释器的方法
2018/10/28 Python
对numpy中向量式三目运算符详解
2018/10/31 Python
Python re正则表达式元字符分组()用法分享
2020/02/10 Python
使用python修改文件并立即写回到原始位置操作(inplace读写)
2020/06/28 Python
基于python实现ROC曲线绘制广场解析
2020/06/28 Python
Python新建项目自动添加介绍和utf-8编码的方法
2020/12/26 Python
AmazeUI 加载进度条的实现示例
2020/08/20 HTML / CSS
英格兰橄榄球商店:England Rugby Store
2016/12/17 全球购物
波兰化妆品和护肤品购物网站:eKobieca
2019/08/30 全球购物
日语系毕业生推荐信
2013/11/11 职场文书
餐厅考勤管理制度
2014/01/28 职场文书
客户经理竞聘演讲稿
2014/05/15 职场文书
会计专业自荐信范文
2015/03/05 职场文书
节约用电倡议书
2015/04/28 职场文书
pytorch 梯度NAN异常值的解决方案
2021/06/05 Python