当前位置:Gxlcms > PHP教程 > PHP读写XML文件技巧_PHP教程

PHP读写XML文件技巧_PHP教程

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

常用 如下 几行:

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

PHP可以方便的生成和读取XML文件。PHP主要通过DOMDocument、DOMElement和DOMNodeList来完成XML的读取与写入操作的。下面就简要说明下如何使用这些类。

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

[html]

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



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

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

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

$dom = newDOMDocument('1.0', 'UTF-8');

$dom->formatOutput= true;

再创建结点和结点</p> <p>$rootelement =$dom->createElement("article");</p> <p>$title =$dom->createElement("title", "PHP访问MySql数据库 初级篇");</p> <p>然后创建带文本内容的结点</p> <p>$link =$dom->createElement("link","http://blog.csdn.net/morewindows/article/details/7102362");</p> <p>也可以先生成结点再为其添加文本内容。</p> <p>$link = $dom->createElement("link");</p> <p>$linktext =$dom->createTextNode('http://blog.csdn.net/morewindows/article/details/7102362');</p> <p>$link->appendChild($linktext);</p> <p>然后将<title>和结点加入到结点中去</p> <p>$rootelement->appendChild($title);</p> <p>$rootelement->appendChild($link);</p> <p>最后将结点加入到DOMDocument对象中,</p> <p>$dom->appendChild($rootelement);</p> <p>这样一个完整的XML就生成完毕了。再整出整个XML,</p> <p>echo $dom->saveXML() ;</p> <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> <p>[php] <?php <br /> //将数组</pre>输出到XML文件中 <br /> // by MoreWindows( http://blog.csdn.net/MoreWindows ) <br /> $article_array = array( <br /> "第一篇" => array( <br /> "title"=>"PHP访问MySql数据库 初级篇", <br /> "link"=>"http://blog.csdn.net/morewindows/article/details/7102362" <br /> ), <br /> "第二篇" => array( <br /> "title"=>"PHP访问MySql数据库 中级篇 Smarty技术", <br /> "link"=>"http://blog.csdn.net/morewindows/article/details/7094642" <br /> ), <br /> "第三篇" => array( <br /> "title"=>"PHP访问MySql数据库 高级篇 AJAX技术", <br /> "link"=>"http://blog.csdn.net/morewindows/article/details/7086524" <br /> ), <br /> ); <br /> $dom = new DOMDocument('1.0', 'UTF-8'); <br /> $dom->formatOutput = true; <br /> $rootelement = $dom->createElement("MoreWindows"); <br /> foreach ($article_array as $key=>$value) <br /> { <br /> $article = $dom->createElement("article", $key); <br /> $title = $dom->createElement("title", $value['title']); <br /> $link = $dom->createElement("link", $value['link']); <br /> $article->appendChild($title); <br /> $article->appendChild($link); <br /> $rootelement->appendChild($article); <br /> </p> <p>} <br /> $dom->appendChild($rootelement); <br /> $filename = "D:test.xml"; <br /> echo 'XML文件大小' . $dom->save($filename) . '字节'; <br /> ?> <br /> <?php<br /> //将数组</pre>输出到XML文件中<br /> // by MoreWindows( http://blog.csdn.net/MoreWindows )<br /> $article_array = array(<br /> "第一篇" => array(<br /> "title"=>"PHP访问MySql数据库 初级篇",<br /> "link"=>"http://blog.csdn.net/morewindows/article/details/7102362"<br /> ),<br /> "第二篇" => array(<br /> "title"=>"PHP访问MySql数据库 中级篇 Smarty技术",<br /> "link"=>"http://blog.csdn.net/morewindows/article/details/7094642"<br /> ),<br /> "第三篇" => array(<br /> "title"=>"PHP访问MySql数据库 高级篇 AJAX技术",<br /> "link"=>"http://blog.csdn.net/morewindows/article/details/7086524"<br /> ),<br /> );<br /> $dom = new DOMDocument('1.0', 'UTF-8');<br /> $dom->formatOutput = true;<br /> $rootelement = $dom->createElement("MoreWindows");<br /> foreach ($article_array as $key=>$value)<br /> {<br /> $article = $dom->createElement("article", $key);<br /> $title = $dom->createElement("title", $value['title']);<br /> $link = $dom->createElement("link", $value['link']);<br /> $article->appendChild($title);<br /> $article->appendChild($link);<br /> $rootelement->appendChild($article);<br /> }<br /> $dom->appendChild($rootelement);<br /> $filename = "D:test.xml";<br /> echo 'XML文件大小' . $dom->save($filename) . '字节';<br /> ?><br /> 运行该PHP会在D盘上生成test.xml文件(Win7 + XAMPP + IE9.0测试通过)</p> <p> </p> <p>二.读取XML文件 <br /> 以读取前文中生成的D:test.xml为例:</p> <p>[php] <?php <br /> //读取XML文件 <br /> // by MoreWindows( http://blog.csdn.net/MoreWindows ) <br /> $filename = "D:test.xml"; <br /> $article_array = array(); <br /> <br /> $dom = new DOMDocument('1.0', 'UTF-8'); <br /> $dom->load($filename); <br /> <br /> //得到结点 <br /> $articles = $dom->getElementsByTagName("article"); <br /> echo ' 结点个数 ' . $articles->length; <br /> foreach ($articles as $article) <br /> { <br /> $id = $article->getElementsByTagName("id")->item(0)->nodeValue; <br /> $title = $article->getElementsByTagName("title")->item(0)->nodeValue; <br /> $link = $article->getElementsByTagName("link")->item(0)->nodeValue; <br /> $article_array[$id] = array('title'=>$title, 'link'=>$link); <br /> } <br /> <br /> //</pre>输出结果 <br /> echo "<pre class="brush:php;toolbar:false">"; <br /> var_dump($article_array); <br /> echo "</pre>"; <br /> ?> <br /> <?php<br /> //读取XML文件<br /> // by MoreWindows( http://blog.csdn.net/MoreWindows )<br /> $filename = "D:test.xml";<br /> $article_array = array();</p> <p> </p> <p>$dom = new DOMDocument('1.0', 'UTF-8');<br /> $dom->load($filename);</p> <p>//得到结点<br /> $articles = $dom->getElementsByTagName("article");<br /> echo ' 结点个数 ' . $articles->length;<br /> foreach ($articles as $article)<br /> {<br /> $id = $article->getElementsByTagName("id")->item(0)->nodeValue;<br /> $title = $article->getElementsByTagName("title")->item(0)->nodeValue;<br /> $link = $article->getElementsByTagName("link")->item(0)->nodeValue;<br /> $article_array[$id] = array('title'=>$title, 'link'=>$link);<br /> }</p> <p>//</pre>输出结果<br /> echo "<pre class="brush:php;toolbar:false">";<br /> var_dump($article_array);<br /> echo "</pre>";<br /> ?></p></p> <p align="left"><span id="url" itemprop="url">http://www.bkjia.com/PHPjc/371866.html</span><span id="indexUrl" itemprop="indexUrl">www.bkjia.com</span><span id="isOriginal" itemprop="isOriginal">true</span><span id="isBasedOnUrl" itemprop="isBasedOnUrl">http://www.bkjia.com/PHPjc/371866.html</span><span id="genre" itemprop="genre">TechArticle</span><span id="description" itemprop="description">常用 如下 几行: header(content-type:text/html; charset=utf-8); //指定PHP使用UTF-8编码 $xml = simplexml_load_file(example.xml); //读取xml文件 $newxml = $xml-asXML(...</span></p> </div> <div class=""> <ul class="m-news-opt fix"> <li class="opt-item"> <a href='/PHPjiqiao-168610.html' target='_blank'><p>< 上一篇</p><p class="ellipsis">URL长度有限制吗?_PHP教程</p></a> </li> <li class="opt-item ta-r"> <a href='/PHPjiqiao-168612.html' target='_blank'><p>下一篇 ></p><p class="ellipsis">PHP正则表达式基本函数_PHP教程</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>