当前位置:Gxlcms > PHP教程 > php读写xml文件的方法介绍

php读写xml文件的方法介绍

时间:2021-07-01 10:21:17 帮助过:20人阅读

  1. header("content-type:text/html; charset=utf-8"); //指定PHP使用UTF-8编码
  2. $xml = simplexml_load_file("example.xml"); //读取xml文件
  3. $newxml = $xml->asXML(); //标准化$xml
  4. $fp = fopen("newxml.xml", "w"); //新建xml文件
  5. fwrite($fp, $newxml); //写入-------xml文件
  6. fclose($fp);

php可以方便的生成和读取xml文件。 主要通过DOMDocument、DOMElement和DOMNodeList来完成XML的读取与写入操作。

下面为大家介绍如何使用这些类,供大家学习参考。

一.生成XML文件 对于一个如下XML文件。

  1. PHP访问mysql数据库 初级篇
  2. http://blog.csdn.net/morewindows/article/details/7102362
  3. PHP访问MySql数据库 初级篇
  4. http://blog.csdn.net/morewindows/article/details/7102362

我们来看看如何用PHP来生成:

首先new一个DOMDocument对象并设置编码格式。

  1. $dom = newDOMDocument('1.0', 'UTF-8');
  2. $dom->formatOutput= true;

再创建结点和结点 </p><ol><li><li>$rootelement =$dom->createElement("article");<li>$title =$dom->createElement("title", "PHP访问MySql数据库 初级篇");</ol><em onclick="copycode($('code_qiv'));"></em><p>然后创建带文本内容的结点 </p><ol><li><li>$link =$dom->createElement("link","http://blog.csdn.net/morewindows/article/details/7102362");</ol><em onclick="copycode($('code_rRR'));"></em><p>也可以先生成结点再为其添加文本内容。 </p><ol><li><li>$link = $dom->createElement("link");<li>$linktext =$dom->createTextNode('http://blog.csdn.net/morewindows/article/details/7102362');<li>$link->appendChild($linktext);</ol><em onclick="copycode($('code_wcK'));"></em><p>然后将<title>和结点加入到结点中去 </p><ol><li><li>$rootelement->appendChild($title);<li>$rootelement->appendChild($link);</ol><em onclick="copycode($('code_zKk'));"></em><p>最后将结点加入到DOMDocument对象中, </p><ol><li><li>$dom->appendChild($rootelement);</ol><em onclick="copycode($('code_fY4'));"></em><p>这样一个完整的XML就生成完毕了。再整出整个XML, </p><ol><li><li>echo $dom->saveXML() ;</ol><em onclick="copycode($('code_O6A'));"></em><p>saveXML()也可以只输入部分XML文本,如echo $dom->saveXML($link);就只会</pre>输出结点:http://blog.csdn.net/morewindows/article/details/7102362</link></p> <p>下面再给出一个完整的PHP中数据内容</pre>输出到XML文件的例子。该例子会对将一个PHP数组</pre>输出到XML文件中。 </p><ol><li><li><?php<li>//将数组</pre>输出到XML文件中<li>// by MoreWindows( http://blog.csdn.net/MoreWindows )<li>$article_array = array(<li>"第一篇" => array(<li>"title"=>"PHP访问MySql数据库 初级篇",<li>"link"=>"http://blog.csdn.net/morewindows/article/details/7102362"<li>),<li>"第二篇" => array(<li>"title"=>"PHP访问MySql数据库 中级篇 Smarty技术",<li>"link"=>"http://blog.csdn.net/morewindows/article/details/7094642"<li>),<li>"第三篇" => array(<li>"title"=>"PHP访问MySql数据库 高级篇 AJAX技术",<li>"link"=>"http://blog.csdn.net/morewindows/article/details/7086524"<li>),<li>);<li>$dom = new DOMDocument('1.0', 'UTF-8');<li>$dom->formatOutput = true;<li>$rootelement = $dom->createElement("MoreWindows");<li>foreach ($article_array as $key=>$value)<li>{<li>$article = $dom->createElement("article", $key);<li>$title = $dom->createElement("title", $value['title']);<li>$link = $dom->createElement("link", $value['link']);<li>$article->appendChild($title);<li>$article->appendChild($link);<li>$rootelement->appendChild($article);<li>}<li>$dom->appendChild($rootelement);<li>$filename = "D:test.xml";<li>echo 'XML文件大小' . $dom->save($filename) . '字节';<li>?></ol><em onclick="copycode($('code_du9'));"></em><p>#------------------- </p><ol><li><li><?php<li>//将数组</pre>输出到XML文件中<li>// by MoreWindows( http://blog.csdn.net/MoreWindows )<li>$article_array = array(<li>"第一篇" => array(<li>"title"=>"PHP访问MySql数据库 初级篇",<li>"link"=>"http://blog.csdn.net/morewindows/article/details/7102362"<li>),<li>"第二篇" => array(<li>"title"=>"PHP访问MySql数据库 中级篇 Smarty技术",<li>"link"=>"http://blog.csdn.net/morewindows/article/details/7094642"<li>),<li>"第三篇" => array(<li>"title"=>"PHP访问MySql数据库 高级篇 AJAX技术",<li>"link"=>"http://blog.csdn.net/morewindows/article/details/7086524"<li>),<li>);<li>$dom = new DOMDocument('1.0', 'UTF-8');<li>$dom->formatOutput = true;<li>$rootelement = $dom->createElement("MoreWindows");<li>foreach ($article_array as $key=>$value)<li>{<li>$article = $dom->createElement("article", $key);<li>$title = $dom->createElement("title", $value['title']);<li>$link = $dom->createElement("link", $value['link']);<li>$article->appendChild($title);<li>$article->appendChild($link);<li>$rootelement->appendChild($article);<li>}<li>$dom->appendChild($rootelement);<li>$filename = "D:test.xml";<li>echo 'XML文件大小' . $dom->save($filename) . '字节';<li>?></ol><em onclick="copycode($('code_LNR'));"></em><p> 运行该PHP会在D盘上生成test.xml文件(Win7 + XAMPP + IE9.0测试通过)</p> <p><u><strong>二.读取XML文件</strong></u> 以读取前文中生成的D:test.xml为例: </p><ol><li><li><li><p><?php<li>//读取XML文件<li>// by MoreWindows( http://blog.csdn.net/MoreWindows )<li>$filename = "D:test.xml";<li>$article_array = array();</p><li><p>$dom = new DOMDocument('1.0', 'UTF-8');<li>$dom->load($filename);</p><li><p>//得到结点<li>$articles = $dom->getElementsByTagName("article");<li>echo ' 结点个数 ' . $articles->length;<li>foreach ($articles as $article)<li>{<li>$id = $article->getElementsByTagName("id")->item(0)->nodeValue;<li>$title = $article->getElementsByTagName("title")->item(0)->nodeValue;<li>$link = $article->getElementsByTagName("link")->item(0)->nodeValue;<li>$article_array[$id] = array('title'=>$title, 'link'=>$link);<li>}</p><li><p>//</pre>输出结果<li>echo "<pre class="brush:php;toolbar:false">";<li>var_dump($article_array);<li>echo "</pre>";<li>?></p><li></ol><em onclick="copycode($('code_oek'));"></em><p>#----------------- </p><ol><li><li><li><p><?php<li>//读取XML文件<li>// by MoreWindows( http://blog.csdn.net/MoreWindows )<li>$filename = "D:test.xml";<li>$article_array = array();</p><li><p>$dom = new DOMDocument('1.0', 'UTF-8');<li>$dom->load($filename);</p><li><p>//得到结点<li>$articles = $dom->getElementsByTagName("article");<li>echo ' 结点个数 ' . $articles->length;<li>foreach ($articles as $article)<li>{<li>$id = $article->getElementsByTagName("id")->item(0)->nodeValue;<li>$title = $article->getElementsByTagName("title")->item(0)->nodeValue;<li>$link = $article->getElementsByTagName("link")->item(0)->nodeValue;<li>$article_array[$id] = array('title'=>$title, 'link'=>$link);<li>}</p><li><p>//</pre>输出结果<li>echo "<pre class="brush:php;toolbar:false">";<li>var_dump($article_array);<li>echo "</pre>";<li>?></p><li></ol><em onclick="copycode($('code_PhZ'));"></em></td></tr></table> </div> <div class=""> <ul class="m-news-opt fix"> <li class="opt-item"> <a href='/PHPjiqiao-178146.html' target='_blank'><p>< 上一篇</p><p class="ellipsis">phpeval函数用法及相关技巧</p></a> </li> <li class="opt-item ta-r"> <a href='/PHPjiqiao-178148.html' target='_blank'><p>下一篇 ></p><p class="ellipsis">php调用外部shell的方法总结</p></a> </li> </ul> </div> </div> </div> <div class="g-title fix"> <h2 class="title-txt">人气教程排行</h2> </div> <div class="m-rank u-dashed mb40"> <ul> <li class="rank-item"> <a href="/PHPjiqiao-379253.html" title='php如何获取跳转前的url' class="item-name ellipsis" target="_blank"> <span class="g-art-count fr">174次</span> <span class="g-sort-num top">1</span> php如何获取跳转前的url </a> </li> <li class="rank-item"> <a href="/PHPjiqiao-379019.html" title='php格林威治时间转换成当前时间的方法' class="item-name ellipsis" target="_blank"> <span class="g-art-count fr">174次</span> <span class="g-sort-num second">2</span> php格林威治时间转换成当前时间的方法 </a> </li> <li class="rank-item"> <a href="/PHPjiqiao-366629.html" title='为什么php不能做大型系统?' class="item-name ellipsis" target="_blank"> <span class="g-art-count fr">174次</span> <span class="g-sort-num third">3</span> 为什么php不能做大型系统? </a> </li> <li class="rank-item"> <a href="/PHPjiqiao-207623.html" title='range函数怎么用' class="item-name ellipsis" target="_blank"> <span class="g-art-count fr">174次</span> <span class="g-sort-num ">4</span> range函数怎么用 </a> </li> <li class="rank-item"> <a href="/PHPjiqiao-162433.html" title='php中计算页面加载时间几种方法总结_PHP教程' class="item-name ellipsis" target="_blank"> <span class="g-art-count fr">174次</span> <span class="g-sort-num ">5</span> php中计算页面加载时间几种方法总结_PHP教程 </a> </li> <li class="rank-item"> <a href="/PHPjiqiao-140221.html" title='求帮助,关于paypal支付返回值修改订单状态' class="item-name ellipsis" target="_blank"> <span class="g-art-count fr">174次</span> <span class="g-sort-num ">6</span> 求帮助,关于paypal支付返回值修改订单状态 </a> </li> <li class="rank-item"> <a href="/PHPjiqiao-103588.html" title='typecho怎么配置文章内容页?' class="item-name ellipsis" target="_blank"> <span class="g-art-count fr">174次</span> <span class="g-sort-num ">7</span> typecho怎么配置文章内容页? </a> </li> <li class="rank-item"> <a href="/PHPjiqiao-99213.html" title='PhpStorm左侧structure不显示文件的方法列表是这么回事?' class="item-name ellipsis" target="_blank"> <span class="g-art-count fr">174次</span> <span class="g-sort-num ">8</span> PhpStorm左侧structure不显示文件的方法列表是这么回事? </a> </li> <li class="rank-item"> <a href="/PHPjiqiao-92208.html" title='查看PHP的环境变量_PHP' class="item-name ellipsis" target="_blank"> <span class="g-art-count fr">174次</span> <span class="g-sort-num ">9</span> 查看PHP的环境变量_PHP </a> </li> <li class="rank-item"> <a href="/PHPjiqiao-170.html" title='PHP Primary script unknown 解决方法总结' class="item-name ellipsis" target="_blank"> <span class="g-art-count fr">174次</span> <span class="g-sort-num ">10</span> PHP Primary script unknown 解决方法总结 </a> </li> <li class="rank-item"> <a href="/PHPjiqiao-148.html" title='php的命名空间与自动加载实现方法' class="item-name ellipsis" target="_blank"> <span class="g-art-count fr">174次</span> <span class="g-sort-num ">11</span> php的命名空间与自动加载实现方法 </a> </li> <li class="rank-item"> <a href="/PHPjiqiao-133.html" title='解决laravel 出现ajax请求419(unknown status)的问题' class="item-name ellipsis" target="_blank"> <span class="g-art-count fr">174次</span> <span class="g-sort-num ">12</span> 解决laravel 出现ajax请求419(unknown status)的问题 </a> </li> <li class="rank-item"> <a href="/PHPjiqiao-462817.html" title='php 如何删除mysql记录' class="item-name ellipsis" target="_blank"> <span class="g-art-count fr">173次</span> <span class="g-sort-num ">13</span> php 如何删除mysql记录 </a> </li> <li class="rank-item"> <a href="/PHPjiqiao-388448.html" title='PHP如何替换数组中的指定元素' class="item-name ellipsis" target="_blank"> <span class="g-art-count fr">173次</span> <span class="g-sort-num ">14</span> PHP如何替换数组中的指定元素 </a> </li> <li class="rank-item"> <a href="/PHPjiqiao-124270.html" title='怎么去除字符串中非汉字、非字母、非数字的字符' class="item-name ellipsis" target="_blank"> <span class="g-art-count fr">173次</span> <span class="g-sort-num ">15</span> 怎么去除字符串中非汉字、非字母、非数字的字符 </a> </li> <li class="rank-item"> <a href="/PHPjiqiao-112291.html" title='mysql如何一次执行多条SQL语句' class="item-name ellipsis" target="_blank"> <span class="g-art-count fr">173次</span> <span class="g-sort-num ">16</span> mysql如何一次执行多条SQL语句 </a> </li> <li class="rank-item"> <a href="/PHPjiqiao-110669.html" title='修改header里面的Connection为close解决方法' class="item-name ellipsis" target="_blank"> <span class="g-art-count fr">173次</span> <span class="g-sort-num ">17</span> 修改header里面的Connection为close解决方法 </a> </li> <li class="rank-item"> <a href="/PHPjiqiao-153.html" title='PHP基于session.upload_progress 实现文件上传进度显示功能详解' class="item-name ellipsis" target="_blank"> <span class="g-art-count fr">173次</span> <span class="g-sort-num ">18</span> PHP基于session.upload_progress 实现文件上传进度显示功能详解 </a> </li> <li class="rank-item"> <a href="/PHPjiqiao-125.html" title='php5.6.x到php7.0.x特性小结' class="item-name ellipsis" target="_blank"> <span class="g-art-count fr">173次</span> <span class="g-sort-num ">19</span> php5.6.x到php7.0.x特性小结 </a> </li> <li class="rank-item"> <a href="/PHPjiqiao-378118.html" title='php为什么会出现504错误' class="item-name ellipsis" target="_blank"> <span class="g-art-count fr">172次</span> <span class="g-sort-num ">20</span> php为什么会出现504错误 </a> </li> </ul> </div> </div> </div> <!-- / 教程内容页 --> </div> </div> <!-- 页尾 --> <div class="footer"> 本站所有资源全部来源于网络,若本站发布的内容侵害到您的隐私或者利益,请联系我们删除!</div> <!-- / 页尾 --> <script type="text/javascript" src="/kan/js/read.js"></script> <div style="display:none"> <div class="login-box" id="login-dialog"> <div class="login-top"><a class="current" rel="nofollow" id="login1" onclick="setTab('login',1,2);" >登录</a></div> <div class="login-form" id="nav-signin"> <!-- <div class="login-ico"><a rel="nofollow" class="qq" id="qqlogin" target="_blank" href="/user-center-qqlogin.html"> QQ </a></div> --> <div class="login-box-form" id="con_login_1"> <form id="loginform" action="/user-center-login.html" method="post" onsubmit="return false;"> <p class="int-text"> <input class="email" id="username" name="username" type="text" value="用户名或Email" onfocus="if(this.value=='用户名或Email'){this.value='';}" onblur="if(this.value==''){this.value='用户名或Email';};" ></p> <p class="int-text"> <input class="password1" type="password" id="password" name="password" value="******" onBlur="if(this.value=='') this.value='******';" onFocus="if(this.value=='******') this.value='';" > </p> <p class="int-info"> <label class="ui-label"> </label> <label for="agreement" class="ui-label-checkbox"> <input type="checkbox" value="" name="cookietime" id="cookietime" checked="checked" value="2592000"> <input type="hidden" name="notforward" id="notforward" value="1"> <input type="hidden" name="dosubmit" id="dosubmit" value="1">记住我的登录 </label> <a rel="nofollow" class="aright" href="/user-center-forgetpwd.html" target="_blank"> 忘记密码? </a></p> <p class="int-btn"><a rel="nofollow" id="loginbt" class="loginbtn"><span>登录</span></a></p> </form> </div> <form id="regform" action="/user-center-reg.html" method="post"> <div class="login-reg" style="display: none;" id="con_login_2"> <input type="hidden" name="t" id="t"/> <p class="int-text"> <input id="email" name="email" type="text" value="Email" onfocus="if(this.value=='Email'){this.value='';}" onblur="if(this.value==''){this.value='Email';};"></p> <p class="int-text"> <input id="uname" name="username" type="text" value="用户名或昵称" onfocus="if(this.value=='用户名或昵称'){this.value='';}" onblur="if(this.value==''){this.value='用户名或昵称';};"></p> <p class="int-text"> <input type="password" id="pwd" name="password" value="******" onBlur="if(this.value=='') this.value='******';" onFocus="if(this.value=='******') this.value='';"> </p> <p class="int-text1"><span class="inputbox"> <input id="validate" name="validate" type="text" value="验证码" onfocus="if(this.value=='验证码'){this.value='';}" onblur="if(this.value==''){this.value='验证码';};"> </span><span class="yzm-img"><img src="/user-checkcode-index" alt="看不清楚换一张" id="indexlogin"></p> <p class="int-info"> <label> <input value="" name="agreement" id="agreement" CHECKED="checked" type="checkbox"> 我已阅读<a rel="nofollow" href="/user-center-agreement.html">用户协议</a>及<a rel="nofollow" href="/user-center-agreement.html">版权声明</a></label> </p> <p class="int-btn"><input type="hidden" name="dosubmit"/> <a rel="nofollow" class="loginbtn" id="register"><span>注册</span></a></p> </div> </form> </div> </div> </div> </div> <script type="text/javascript" src="/kan/js/foot_js.js"></script> <script> var _hmt = _hmt || []; (function() { var hm = document.createElement("script"); hm.src = "https://hm.baidu.com/hm.js?6dc1c3c5281cf70f49bc0bc860ec24f2"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(hm, s); })(); </script> <script type="text/javascript" src="/layui/layui.js"></script> <script> layui.use('code', function() { layui.code({ elem: 'pre', //默认值为.layui-code about: false, skin: 'notepad', title: 'php怎么实现数据库验证跳转代码块', encode: true //是否转义html标签。默认不开启 }); }); </script> </body> </html>