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 相关文章推荐
截获网站title标签之家内容的例子
Oct 09 PHP
一个更简单的无限级分类菜单代码
Jan 16 PHP
php日历[测试通过]
Mar 27 PHP
php中将数组转成字符串并保存到数据库中的函数代码
Sep 29 PHP
php实现QQ空间获取当前用户的用户名并生成图片
Jul 25 PHP
ThinkPHP自定义Redis处理SESSION的实现方法
May 16 PHP
PHP上传图片、删除图片简单实例
Nov 12 PHP
laravel创建类似ThinPHP中functions.php的全局函数
Nov 26 PHP
PHP 中TP5 Request 请求对象的实例详解
Jul 31 PHP
微信公众号开发之获取位置信息php代码
Jun 13 PHP
PHP-FPM 的管理和配置详解
Feb 17 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截取汉字乱码问题解决方法mb_substr函数的应用
2008/03/30 PHP
php初学者写及时补给skype用户充话费的小程序
2008/11/02 PHP
php之Memcache学习笔记
2013/06/17 PHP
php+mysql实现数据库随机重排实例
2014/10/17 PHP
ThinkPHP中公共函数路径和配置项路径的映射分析
2014/11/22 PHP
php之static静态属性与静态方法实例分析
2015/07/30 PHP
PHP中ltrim()函数的用法与实例讲解
2019/03/28 PHP
统一接口:为FireFox添加IE的方法和属性的js代码
2007/03/25 Javascript
js 发个判断字符串是否为符合标准的函数
2009/04/27 Javascript
Mootools 1.2教程 滑动效果(Slide)
2009/09/15 Javascript
分享JavaScript获取网页关闭与取消关闭的事件
2013/12/13 Javascript
js实现div的切换特效上一个下一个
2014/02/11 Javascript
jQuery基础语法实例入门
2014/12/23 Javascript
深入理解JavaScript系列(30):设计模式之外观模式详解
2015/03/03 Javascript
jQuery插件ajaxFileUpload异步上传文件
2016/10/19 Javascript
原生javascript实现分页效果
2017/04/21 Javascript
详解JavaScript中的六种错误类型
2017/09/21 Javascript
Vue打包后出现一些map文件的解决方法
2018/02/13 Javascript
jQuery实现碰到边缘反弹的动画效果
2018/02/24 jQuery
JavaScript实现动态添加、移除元素或属性的方法分析
2019/01/03 Javascript
vue实现五子棋游戏
2020/05/28 Javascript
TypeScript 引用资源文件后提示找不到的异常处理技巧
2020/07/15 Javascript
Python中encode()方法的使用简介
2015/05/18 Python
Python中zfill()方法的使用教程
2015/05/20 Python
使用url_helper简化Python中Django框架的url配置教程
2015/05/30 Python
在Django的URLconf中使用命名组的方法
2015/07/18 Python
使用urllib库的urlretrieve()方法下载网络文件到本地的方法
2018/12/19 Python
Python获取航线信息并且制作成图的讲解
2019/01/03 Python
10款最好的Python开发编辑器
2019/07/03 Python
python lambda函数及三个常用的高阶函数
2020/02/05 Python
分布式全文检索引擎ElasticSearch原理及使用实例
2020/11/14 Python
办理护照介绍信
2014/01/16 职场文书
高中体育教学反思
2014/01/24 职场文书
商业街策划方案
2014/05/31 职场文书
辞职信的写法
2015/02/27 职场文书
2015年小学远程教育工作总结
2015/07/28 职场文书