本文说明了用php解析xml和生成sql语句的方法。分享给大家参考,如下:
php解析xml的方法有很多,其中在文档中有很多,搜索了很多。
今天,我们满足一个要求:从xml中提取节点属性,然后更新数据库表中的字段。
思考:
解析XML,获取所有节点属性-循环节点集,获取相应的属性-拼接sql字符串并将其存储在数组中-将数组转换为字符串并将其保存在文件中
这里使用了Xpath,在编写代码的过程中有两个问题:
1.当xml的历史路径属性为D:xx…,文件无法加载,只需将其更改为“/”(/“(Linux)下的分隔符)
2.获取一个节点的属性,使用:attributes,编辑器会一直用红色提示,找到半天文档,最后使用-getAttribute()(猜测,因为太奇怪了,支持-previousibiling和-nodeValue)。据此,文档上的DOM element :3360 get attribute直接报告了一个错误。
以下是示例代码:
将titlexml翻译成SQL/title meta http-equiv=' content-type ' content=' text/html;charset=utf-8 '/style type=' text/CSS '。tip _ info { margin-bottom :10 px;} .tip _ info span { color: # f00}/style?PHP $ XML=' d :/RES/Dressconfig . XML ';$ doc=new DOM document();$ doc-load($ XML);$ XPath=new DOMxpath($ doc);$ query='//I ';$ entries=$ XPath-query($ query);$ len=$ entries-长度;Echo 'div class='tip_info '找到:span '。$莱恩。/span nodes/div ';$ arr=array();$ idx=0;while($ idx $ len){ $ NodeItem=$ entries-item($ idx);$ id=$ NodeItem-GetAttribute(' I ');$ name=$ NodeItem-GetAttribute(' n ');$ INF=$ NodeItem-GetAttribute(' INF ');//回显“div”。$id。' - '.$name。' - '.$inf。/div ';$ idxarray_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 ',内爆(' nr ',$ arr));回声“生成!”;因为数据是从数据库表中生成的,所以找到的节点数就是表中记录的总数。生成后,可以大致检查内容是否正确,然后执行sql脚本来达到目的。
PS:这里有一些关于xml操作的在线工具,供大家参考:
在线XML/JSON相互转换工具:http://tools.jb51.net/code/xmljson
在线格式化/在线压缩:http://tools.jb51.net/code/xmlformat
XML在线压缩/格式化工具:http://tools.jb51.net/code/xml_format_compress
XML代码在线格式化美化工具:http://tools.jb51.net/code/xmlcodeformat
更多对PHP相关内容感兴趣的读者可以查看本网站的话题:《PHP针对XML文件操作技巧总结》、《PHP数组(Array)操作技巧大全》、《php字符串(string)用法总结》、《PHP错误与异常处理方法总结》、《PHP基本语法入门教程》、《php面向对象程序设计入门教程》、《php+mysql数据库操作入门教程》、《php常见数据库操作技巧汇总》、0103010。
希望本文对PHP编程有所帮助。