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 31 PHP
从Web查询数据库之PHP与MySQL篇
Sep 25 PHP
php中使用addslashes函数报错问题的解决方法
Feb 06 PHP
解析如何屏蔽php中的phpinfo()函数
Jun 06 PHP
PHP+iFrame实现页面无需刷新的异步文件上传
Sep 16 PHP
php生成图片验证码的实例讲解
Aug 03 PHP
PHP实现简单实用的分页类代码
Apr 08 PHP
thinkPHP3.2简单实现文件上传的方法
May 16 PHP
PHP函数引用返回的实例详解
Sep 11 PHP
php获取网站根目录物理路径的几种方法(推荐)
Mar 04 PHP
Laravel学习笔记之Artisan命令生成自定义模板的方法
Nov 22 PHP
PHPExcel实现的读取多工作表操作示例
Apr 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 stristr() 函数(不区分大小写的字符串查找)
2010/06/03 PHP
给ECShop添加最新评论
2015/01/07 PHP
PHP实现对二维数组某个键排序的方法
2016/09/14 PHP
ThinkPHP打水印及设置水印位置的方法
2016/10/14 PHP
购物车实现的几种方式优缺点对比
2018/05/02 PHP
ThinkPHP框架获取最后一次执行SQL语句及变量调试简单操作示例
2018/06/13 PHP
PHP __call()方法实现委托示例
2019/05/20 PHP
fireworks菜单生成器mm_menu.js在 IE 7.0 显示问题的解决方法
2009/10/20 Javascript
javascript当onmousedown、onmouseup、onclick同时应用于同一个标签节点Element
2010/01/05 Javascript
JS事件在IE与FF中的区别详细解析
2013/11/20 Javascript
点击弹出层效果&amp;弹出窗口后网页背景变暗效果的实现代码
2014/02/10 Javascript
Jquery+asp.net后台数据传到前台js进行解析的方法
2014/05/11 Javascript
JavaScript中对DOM节点的访问、创建、修改、删除
2015/11/16 Javascript
详解jQuery中的empty、remove和detach
2016/04/11 Javascript
Vue press 支持图片放大功能的实例代码
2018/11/09 Javascript
React 使用recharts实现散点地图的示例代码
2018/12/07 Javascript
微信小程序实现复选框效果
2018/12/28 Javascript
使用异步组件优化Vue应用程序的性能
2019/04/28 Javascript
详解如何写出一个利于扩展的vue路由配置
2019/05/16 Javascript
vue 实现v-for循环回来的数据动态绑定id
2019/11/07 Javascript
Element InfiniteScroll无限滚动的具体使用方法
2020/07/27 Javascript
Python实现简单求解给定整数的质因数算法示例
2018/03/25 Python
对python生成业务报表的实例详解
2019/02/03 Python
python matplotlib画图库学习绘制常用的图
2019/03/19 Python
Python生成指定数量的优惠码实操内容
2019/06/18 Python
selenium设置浏览器为headless无头模式(Chrome和Firefox)
2021/01/08 Python
泰国汽车、火车和轮渡票预订网站:Bus Online Ticket
2017/09/09 全球购物
PHP如何设置和取得Cookie值
2015/06/30 面试题
怎样声明接口
2014/09/19 面试题
办加油卡单位介绍信
2014/01/09 职场文书
展会邀请函范文
2014/01/26 职场文书
标准自荐信范文
2014/01/29 职场文书
优秀医生事迹材料
2014/02/12 职场文书
大学新生入学教育方案
2014/05/16 职场文书
2015年社区综治宣传月活动总结
2015/03/25 职场文书
建房合同协议书
2016/03/21 职场文书