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 相关文章推荐
1.PHP简介
Oct 09 PHP
简单PHP上传图片、删除图片实现代码
May 12 PHP
PHP echo,print,printf,sprintf函数之间的区别与用法详解
Nov 27 PHP
PHP删除数组中空值的方法介绍
Apr 14 PHP
PHP错误WARNING: SESSION_START() [FUNCTION.SESSION-START]解决方法
May 04 PHP
PHP5.5和之前的版本empty函数的不同之处
Jun 13 PHP
PHP实现数组递归转义的方法
Aug 28 PHP
Yii视图CGridView列表用法实例分析
Jul 12 PHP
浅析Laravel5中队列的配置及使用
Aug 04 PHP
PHP正则表达式匹配替换与分割功能实例浅析
Feb 04 PHP
yii2简单使用less代替css示例
Mar 10 PHP
老生常谈PHP面向对象之标识映射
Jun 21 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中随机显示图片的函数代码
2011/06/23 PHP
PHP冒泡算法详解(递归实现)
2014/11/10 PHP
WordPress的主题编写中获取头部模板和底部模板
2015/12/28 PHP
php设计模式之观察者模式实例详解【星际争霸游戏案例】
2020/03/30 PHP
js实现可兼容IE、FF、Chrome、Opera及Safari的音乐播放器
2015/02/11 Javascript
jQuery实现鼠标滑过Div层背景变颜色的方法
2015/02/17 Javascript
jquery+html5制作超酷的圆盘时钟表
2015/04/14 Javascript
js光标定位文本框回车表单提交问题的解决方法
2015/05/11 Javascript
利用JavaScript的AngularJS库制作电子名片的方法
2015/06/18 Javascript
jQuery+HTML5加入购物车代码分享
2020/10/29 Javascript
jquery if条件语句的写法
2016/05/19 Javascript
用v-html解决Vue.js渲染中html标签不被解析的问题
2016/12/14 Javascript
微信小程序联网请求的轮播图
2017/07/07 Javascript
nodejs操作mongodb的填删改查模块的制作及引入实例
2018/01/02 NodeJs
vue-cli配置环境变量的方法
2018/07/09 Javascript
vue上传图片到oss的方法示例(图片带有删除功能)
2018/09/27 Javascript
使用jquery的cookie实现登录页记住用户名和密码的方法
2019/03/13 jQuery
[02:52]2014DOTA2西雅图国际邀请赛 CIS战队巡礼
2014/07/07 DOTA
[02:50]【扭转乾坤,只此一招】DOTA2永雾林渊版本开启新篇章
2020/12/22 DOTA
Python文件读取的3种方法及路径转义
2015/06/21 Python
python开发中module模块用法实例分析
2015/11/12 Python
Python中的默认参数实例分析
2018/01/29 Python
Python文件常见操作实例分析【读写、遍历】
2018/12/10 Python
Python通过cv2读取多个USB摄像头
2019/08/28 Python
python 使用pygame工具包实现贪吃蛇游戏(多彩版)
2019/10/30 Python
image-set实现Retina屏幕下图片显示详细介绍
2012/12/24 HTML / CSS
前端面试必备之html5的新特性
2017/09/05 HTML / CSS
店长岗位的工作内容
2013/11/12 职场文书
编辑硕士自荐信范文
2013/11/27 职场文书
鲜果饮品店创业计划书
2014/01/21 职场文书
加拿大探亲邀请信
2014/01/28 职场文书
《母鸡》教学反思
2014/02/25 职场文书
2014年个人委托书范本
2014/10/13 职场文书
初三英语教学计划
2015/01/23 职场文书
《中国古代诗歌散文欣赏》高中语文教材
2019/08/20 职场文书
详细聊聊关于Mysql联合查询的那些事儿
2021/10/24 MySQL