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 相关文章推荐
超级简单的发送邮件程序
Oct 09 PHP
discuz程序的PHP加密函数原理分析
Aug 05 PHP
PHP-redis中文文档介绍
Feb 07 PHP
一个非常完美的读写ini格式的PHP配置类分享
Feb 12 PHP
试用php中oci8扩展
Jun 18 PHP
PHP实现搜索地理位置及计算两点地理位置间距离的实例
Jan 08 PHP
PHP验证码生成原理和实现
Jan 24 PHP
php 生成签名及验证签名详解
Oct 26 PHP
php 中奖概率算法实现代码
Jan 25 PHP
php对xml文件的增删改查操作实现方法分析
May 19 PHP
PHP自定义函数实现数组比较功能示例
Oct 19 PHP
php通过各种函数判断0和空
Jul 04 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中的cookie不用刷新就生效的方法
2012/02/04 PHP
php实现改变图片直接打开为下载的方法
2015/04/14 PHP
php的crc32函数使用时需要注意的问题(不然就是坑)
2015/04/21 PHP
php判断用户是否手机访问代码
2015/06/08 PHP
ThinkPHP实现递归无级分类――代码少
2015/07/29 PHP
php网页版聊天软件实现代码
2016/08/12 PHP
PHP+Apache实现二级域名之间共享cookie的方法
2019/07/24 PHP
脚本安需导入(装载)的三种模式的对比
2007/06/24 Javascript
jQuery创建平滑的页面滚动(顶部或底部)
2013/02/26 Javascript
javascript中字符串拼接详解
2014/09/26 Javascript
jQuery中die()方法用法实例
2015/01/19 Javascript
JavaScript检测弹出窗口是否已经关闭的方法
2015/03/24 Javascript
JavaScript取得WEB安全颜色列表的方法
2015/07/14 Javascript
js生成随机颜色方法代码分享(三种)
2016/12/29 Javascript
js制作简单的音乐播放器的示例代码
2017/08/28 Javascript
JavaScript中使用参数个数实现重载功能
2017/09/01 Javascript
angular内置provider之$compileProvider详解
2017/09/27 Javascript
JavaScript实现多态和继承的封装操作示例
2018/08/20 Javascript
layui时间控件选择时间范围的实现方法
2019/09/28 Javascript
vue3.0中使用postcss-pxtorem的具体方法
2019/11/20 Javascript
VUE使用axios调用后台API接口的方法
2020/08/03 Javascript
python网络编程学习笔记(一)
2014/06/09 Python
pandas多级分组实现排序的方法
2018/04/20 Python
在Python中COM口的调用方法
2019/07/03 Python
Pytorch使用MNIST数据集实现CGAN和生成指定的数字方式
2020/01/10 Python
Python单链表原理与实现方法详解
2020/02/22 Python
python 异步async库的使用说明
2020/05/04 Python
django模板获取list中指定索引的值方式
2020/05/14 Python
python Gabor滤波器讲解
2020/10/26 Python
会计出纳员的自我评价
2014/01/15 职场文书
关于运动会的广播稿
2014/09/22 职场文书
2015年社区党建工作汇报材料
2015/06/25 职场文书
2016学习依法治国心得体会
2016/01/15 职场文书
2016大学优秀学生干部事迹材料
2016/03/01 职场文书
jQuery ajax - getScript() 方法和getJSON方法
2021/05/14 jQuery
深入浅析React中diff算法
2021/05/19 Javascript