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 相关文章推荐
phpMyAdmin2.11.6安装配置方法
Aug 24 PHP
PHP操作xml代码
Jun 17 PHP
破解图片防盗链的代码(asp/php)测试通过
Jul 02 PHP
php生成随机字符串可指定纯数字、纯字母或者混合的
Apr 18 PHP
PHP移动文件指针ftell()、fseek()、rewind()函数总结
Nov 18 PHP
PHP中如何使用session实现保存用户登录信息
Oct 20 PHP
PHP中常用的数组操作方法笔记整理
May 16 PHP
利用php做服务器和web前端的界面进行交互
Oct 31 PHP
Redis在Laravel项目中的应用实例详解
Aug 11 PHP
php利用云片网实现短信验证码功能的示例代码
Nov 18 PHP
PHP的PDO事务与自动提交
Jan 24 PHP
解决Laravel使用验证时跳转到首页的问题
Nov 17 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(7) php 字符串相关应用
2010/03/05 PHP
PHP跨平台获取服务器IP地址自定义函数分享
2014/12/29 PHP
PHPStorm+XDebug进行调试图文教程
2016/06/13 PHP
JavaScript中String和StringBuffer的速度之争
2010/04/01 Javascript
JavaScript在IE和Firefox(火狐)的不兼容问题解决方法小结
2010/04/13 Javascript
Javascript 面向对象 对象(Object)
2010/05/13 Javascript
jquery蒙版控件实现代码
2010/12/08 Javascript
Js放到HTML文件中的哪个位置有什么区别
2013/08/21 Javascript
文本框水印提示效果的简单实现代码
2014/02/22 Javascript
NodeJS学习笔记之Connect中间件模块(二)
2015/01/27 NodeJs
jQuery插件zepto.js简单实现tab切换
2015/06/16 Javascript
JavaScript数组对象实现增加一个返回随机元素的方法
2015/07/27 Javascript
jQuery zTree加载树形菜单功能
2016/02/25 Javascript
JS给Array添加是否包含字符串的简单方法
2016/10/29 Javascript
详解VueJs异步动态加载块
2017/03/09 Javascript
基于Vuejs和Element的注册插件的编写方法
2017/07/03 Javascript
ionic App问题总结系列之ionic点击系统返回键退出App
2017/08/19 Javascript
Vue组件中prop属性使用说明实例代码详解
2018/05/31 Javascript
Python2.x版本中maketrans()方法的使用介绍
2015/05/19 Python
Python中数字以及算数运算符的相关使用
2015/10/12 Python
更新修改后的Python模块方法
2019/03/03 Python
python基于gevent实现并发下载器代码实例
2019/11/01 Python
Pycharm中import torch报错的快速解决方法
2020/03/05 Python
python 爬取百度文库并下载(免费文章限定)
2020/12/04 Python
魔幻般冒泡背景的CSS3按钮动画
2016/02/27 HTML / CSS
英国的屈臣氏:Boots博姿
2017/12/23 全球购物
DJI美国:消费类无人机领域的领导者
2018/04/27 全球购物
毕业生如何写自我鉴定
2014/03/15 职场文书
环保口号大全
2014/06/12 职场文书
汽车维修求职信
2014/06/15 职场文书
2014企业领导班子四风对照检查材料思想汇报
2014/09/17 职场文书
2014党的群众路线教育实践活动学习心得体会
2014/10/31 职场文书
公证书格式
2015/01/23 职场文书
预备党员党支部意见
2015/06/02 职场文书
2015年街道办事处团委工作总结
2015/10/14 职场文书
一个家长教育孩子的心得体会
2016/01/15 职场文书