• 技术文章 >后端开发 >php教程

    php实现解析xml并生成sql语句的方法php技巧

    jacklovejacklove2018-06-28 17:31:36原创745
    这篇文章主要介绍了php实现解析xml并生成sql语句的方法,涉及php针对xml格式文件的读取、解析及sql字符串拼接相关操作技巧,需要的朋友可以参考下

    本文实例讲述了php实现解析xml并生成sql语句的方法。分享给大家供大家参考,具体如下:

    php解析xml有很多种办法,文档中有,搜索一下就一大把的。

    今天遇到一个需求:将某个xml中的节点属性提取出来,然后更新数据库某一表中的字段。

    思路:

    解析XML,获取所有的节点属性 –> 循环节点集合,获取对应的属性 –> 拼接sql字符串存入一数组 –> 将数组转为字符串保存于某一文件中

    这里使用了xpath,在写代码的过程中遇到两个问题:

    1、xml的史路径属性为D:\xx\…时load不了文件,改为”/”(linux下的分隔符)就可以了

    2、获取一个节点的属性,使用::attributes,编辑器就不停的红色提示,找到半天文档,最后用->getAttribute()就行了(猜的,因为太奇怪了,它支持->previousSibling和->nodeValue),按照,文档上的DOMElement::getAttribute直接就报错了..

    下面是示例代码:

    <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 "<p class='tip_info'>总共找到:<span>".$len."</span>个节点</p>";
    $arr = array();
    $idx = 0;
    while ($idx < $len) {
      $nodeItem = $entries->item($idx);
      $id = $nodeItem->getAttribute("i");
      $name = $nodeItem->getAttribute("n");
      $inf = $nodeItem->getAttribute("inf");
    //  echo "<p>".$id.'--'.$name.'--'.$inf."</p>";
      $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脚本便达到目的了。

    PS:这里再为大家提供几款关于xml操作的在线工具供大家参考使用:

    在线XML/JSON互相转换工具:
    http://tools.jb51.net/code/xmljson

    在线格式化XML/在线压缩XML
    http://tools.jb51.net/code/xmlformat

    XML在线压缩/格式化工具:
    http://tools.jb51.net/code/xml_format_compress

    XML代码在线格式化美化工具:
    http://tools.jb51.net/code/xmlcodeformat

    您可能感兴趣的文章:

    PHP实现正则表达式分组捕获操作示例php技巧

    PHP实现QQ登录的开原理和实现过程php实例

    详解PHP文件的自动加载php实例

    以上就是php实现解析xml并生成sql语句的方法php技巧的详细内容,更多请关注php中文网其它相关文章!

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    上一篇:浅谈PHP源码十六:关于array_count_values函数 下一篇:PHP删除数组中指定下标的元素方法php实例
    20期PHP线上班

    相关文章推荐

    • 【活动】充值PHP中文网VIP即送云服务器• Yii中表单用法实例详解_PHP• PHP实现算式验证码和汉字验证码实例_PHP• PHP+Mysql+Ajax+JS实现省市区三级联动_PHP• 浅析php变量作用域的一些问题_PHP• PHP 转义使用详解_PHP
    1/1

    PHP中文网