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 UTF-8、Unicode和BOM问题
May 18 PHP
php读取纯真ip数据库使用示例
Jan 26 PHP
php导出excel格式数据问题
Mar 11 PHP
ThinkPHP采用实现三级循环代码实例
Jul 18 PHP
php实现的太平洋时间和北京时间互转的自定义函数分享
Aug 19 PHP
phplot生成图片类用法详解
Jan 06 PHP
php ajax实现文件上传进度条
Mar 29 PHP
round robin权重轮循算法php实现代码
May 28 PHP
Docker 如何布置PHP开发环境
Jun 21 PHP
PHP进行批量任务处理不超时的解决方法
Jul 11 PHP
ThinkPHP框架分布式数据库连接方法详解
Mar 14 PHP
iis6手工创建网站后无法运行php脚本的解决方法
Jun 08 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
使用XDebug调试及单元测试覆盖率分析
2011/01/27 PHP
Drupal 添加模块出现莫名其妙的错误的解决方法(往往出现在模块较多时)
2011/04/18 PHP
PHP filter_var() 函数 Filter 函数
2012/04/25 PHP
详解WordPress中用于更新和获取用户选项数据的PHP函数
2016/03/08 PHP
什么是OneThink oneThink后台添加插件步骤
2016/04/13 PHP
thinkphp在低版本Nginx 下支持PATHINFO的方法分享
2016/05/27 PHP
php加密之discuz内容经典加密方式实例详解
2017/02/04 PHP
Linux下安装Memcached服务器和客户端与PHP使用示例
2019/04/15 PHP
php获取是星期几的的一些常用姿势
2019/12/15 PHP
JS中简单的实现像C#中using功能(有源码下载)
2007/01/09 Javascript
CSS+Table图文混排中实现文本自适应图片宽度(超简单+跨所有浏览器)
2009/02/14 Javascript
javascript下string.format函数补充
2010/08/24 Javascript
JavaScript实现SHA-1加密算法的方法
2015/03/11 Javascript
JavaScript的jQuery库插件的简要开发指南
2015/08/12 Javascript
bootstrapValidator 重新启用提交按钮的方法
2017/02/20 Javascript
微信小程序 下拉菜单简单实例
2017/04/13 Javascript
JavaScript数据结构之双向链表定义与使用方法示例
2017/10/27 Javascript
vue 实现搜索的结果页面支持全选与取消全选功能
2019/05/10 Javascript
Vue-CLI与Vuex使用方法实例分析
2020/01/06 Javascript
Vant 在vue-cli 4.x中按需加载操作
2020/11/05 Javascript
一篇不错的Python入门教程
2007/02/08 Python
实例分析python3实现并发访问水平切分表
2018/09/29 Python
python3 中时间戳、时间、日期的转换和加减操作
2020/07/14 Python
python中zip()函数遍历多个列表方法
2021/02/18 Python
HTML中meta标签及Keywords
2020/04/15 HTML / CSS
瑞士图书网站:Weltbild.ch
2019/09/17 全球购物
专科应届生求职信
2013/11/24 职场文书
中文教师求职信
2014/02/22 职场文书
烹饪自我鉴定
2014/03/01 职场文书
综合内勤岗位职责
2014/04/14 职场文书
销售行政专员岗位职责
2014/06/10 职场文书
水电工程师岗位职责
2015/02/13 职场文书
2015年度物业公司工作总结
2015/04/27 职场文书
解除合同协议书范本
2016/03/21 职场文书
python3美化表格数据输出结果的实现代码
2021/04/14 Python
用python自动生成日历
2021/04/24 Python