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 获取可变函数参数的函数
Aug 26 PHP
PHP测试程序运行时间的类
Feb 05 PHP
php中出现空白页的原因及解决方法汇总
Jul 08 PHP
PHP设置进度条的方法
Jul 08 PHP
php将远程图片保存到本地服务器的实现代码
Aug 03 PHP
PHP生成和获取XML格式数据的方法
Mar 04 PHP
浅析php静态方法与非静态方法的用法区别
May 17 PHP
注释PHP和html混合代码的小技巧(分享)
Nov 03 PHP
php array_slice 取出数组中的一段序列实例
Nov 04 PHP
PHP实现的简单在线计算器功能示例
Aug 02 PHP
PHP操作MySQL中BLOB字段的方法示例【存储文本与图片】
Sep 15 PHP
PHP 并发场景的几种解决方案
Jun 14 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
用PHP实现文件上传二法
2006/10/09 PHP
php随机显示图片的简单示例
2014/02/15 PHP
php实现base64图片上传方式实例代码
2017/02/22 PHP
总结一些PHP中好用但又容易忽略的小知识
2017/06/02 PHP
让任务管理器中的CPU跳舞的js代码
2008/11/01 Javascript
javascript 关于# 和 void的区别分析
2009/10/26 Javascript
js用Date对象处理时间实现思路及代码
2013/01/31 Javascript
Javascript算符的优先级介绍
2013/03/20 Javascript
httpclient模拟登陆具体实现(使用js设置cookie)
2013/12/11 Javascript
javascript校验价格合法性实例(必须输入2位小数)
2014/05/05 Javascript
javascript中sort()的用法实例分析
2015/01/30 Javascript
js全选实现和判断是否有复选框选中的方法
2015/02/17 Javascript
jQuery实现本地预览上传图片功能
2016/01/08 Javascript
浅析javascript异步执行函数导致的变量变化问题解决思路
2016/05/13 Javascript
webpack-dev-server远程访问配置方法
2018/02/22 Javascript
nodejs基础之常用工具模块util用法分析
2018/12/26 NodeJs
详解vue路由篇(动态路由、路由嵌套)
2019/01/27 Javascript
小程序实现自定义导航栏适配完美版
2019/04/02 Javascript
layui-table表复选框勾选的所有行数据获取的例子
2019/09/13 Javascript
python多进程实现进程间通信实例
2017/11/24 Python
分数霸榜! python助你微信跳一跳拿高分
2018/01/08 Python
python批量读取txt文件为DataFrame的方法
2018/04/03 Python
解决python "No module named pip" 的问题
2018/10/13 Python
python实现海螺图片的方法示例
2019/05/12 Python
Python一键查找iOS项目中未使用的图片、音频、视频资源
2019/08/12 Python
python 定义类时,实现内部方法的互相调用
2019/12/25 Python
python3中sorted函数里cmp参数改变详解
2020/03/12 Python
Pycharm Available Package无法显示/安装包的问题Error Loading Package List解决
2020/09/18 Python
python使用Windows的wmic命令监控文件运行状况,如有异常发送邮件报警
2021/01/30 Python
CSS3结构性伪类选择器九种写法
2012/04/18 HTML / CSS
保安拾金不昧表扬信
2014/01/15 职场文书
地理科学专业自荐信
2014/09/01 职场文书
党代会心得体会
2014/09/04 职场文书
男方婚前保证书
2015/02/28 职场文书
综合素质评价个性发展自我评价
2015/03/06 职场文书
创业计划书之美容店
2019/09/16 职场文书