首頁  >  文章  >  後端開發  >  php讀寫xml檔的方法介紹

php讀寫xml檔的方法介紹

WBOY
WBOY原創
2016-07-25 09:03:38855瀏覽
  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;
$dom->formatOutput= true;

複製程式碼

<div class="blockcode">再建立結點和<div id="code_qiv">結點 <ol> <li> <li> <li> </ol> </div>$rootelement =$dom->createElement("article");<em onclick="copycode($('code_qiv'));">$title =$dom->createElement("title", "PHP存取MySql資料庫初級篇");</em> </div> <p>複製程式碼<link></p> <div class="blockcode">然後建立帶有文字內容的<div id="code_rRR">結點 <ol> <li> <li> </ol> </div> <em onclick="copycode($('code_rRR'));">$link =$dom->createElement("link","http://blog.csdn.net/morewindows/article/details/7102362" );</em> </div> <p>複製程式碼<link></p> <div class="blockcode">也可以先生成<div id="code_wcK">結點再為其加入文字內容。 <ol> <li> <li> <li> <li> </ol>$link = $dom->createElement("link");</div>$linktext =$dom->createTextNode('http://blog .csdn.net/morewindows/article/details/7102362');<em onclick="copycode($('code_wcK'));">$link->appendChild($linktext);</em> </div> <p>複製程式碼</p> <title> <link> <div class="blockcode">複製程式碼<div id="code_zKk"><ol> <li>然後將</li> <li>和</li> <li>結點加入到結點中去 </li> </ol></div> <em onclick="copycode($('code_zKk'));"></em> </div> <p>$rootelement->appendChild($title);</p>$rootelement->appendChild($link);<div class="blockcode"> <div id="code_fY4">$rootelement->appendChild($link);<ol> <li>$rootelement->appendChild($link);</li> <li> </ol>$rootelement->appendChild($link);</div> <em onclick="copycode($('code_fY4'));">$rootelement->appendChild($link);</em> </div>$rootelement->appendChild($link);<p></p>$rootelement->appendChild($link);<div class="blockcode"> <div id="code_O6A">$rootelement->appendChild($link);<ol> <li>$根>複製程式碼</li> <li> </ol> </div>最後將結點加入DOMDocument物件中, <em onclick="copycode($('code_O6A'));"></em> </div>$dom->appendChild($rootelement);複製程式碼複製程式碼這樣一個完整的XML就生成完畢了。再整出整個XML, echo $dom->saveXML() ;複製代碼<p>saveXML()也可以只輸入部分XML文本,如echo $dom->saveXML($link);就只會輸出<link>結點:<link>http://blog.csdn.net/morewindows /article/details/7102362</p> <p>下面再給一個完整的PHP中資料內容輸出到XML檔的範例。此範例會對將一個PHP陣列輸出到XML檔案中。 </p> <div class="blockcode"> <div id="code_du9"><ol> <li> <li> <?php <li>//將陣列輸出到XML檔案</li> <li>// by MoreWindows( http://blog.csdn.net /MoreWindows )</li> <li>$article_array = array(</li> <li>"第一篇" => array(</li> <li>"title"=>"PHP存取MySql資料庫初級篇",</li> <li>"link"=>"http ://blog.csdn.net/morewindows/article/details/7102362"</li> <li>),</li> <li>"第二篇" => array(</li> <li>"title"=>"PHP存取MySql資料庫中級篇Smarty技術",</li> <li>"link"=>"http://blog.csdn.net/morewindows/article/details/7094642"</li> <li>),</li> <li>"第三篇" => array(</li> <li> "title"=>"PHP訪問MySql資料庫高級篇AJAX技術",</li> <li>"link"=>"http://blog.csdn.net/morewindows/article/details/7086524"</li> <li>),</li> <li>);</li> <li>$dom = new DOMDocument('1.0', 'UTF-8');</li> <li>$dom->formatOutput = true;</li> <li>$rootelement = $dom->createElement("MoreWindows") ;</li> <li>foreach ($article_array as $key=>$value)</li> <li>{</li> <li>$article = $dom->createElement("article", $key);</li> <li>$title = $dom-> createElement("title", $value['title']);</li> <li>$link = $dom->createElement("link", $value['link']);</li> <li>$article->appendChild($ title);</li> <li>$article->appendChild($link);</li> <li>$rootelement->appendChild($article);</li> <li>}</li> <li>$dom->appendChild($rootelement);</li> <li>$ filename = "D:test.xml";</li> <li>echo 'XML檔案大小' . $dom->save($filename) . '位元組';</li> <li>?></li> </ol></div> <em onclick="copycode($('code_du9'));">複製代碼</em> </div> <p>#------------------- </p> <div class="blockcode"> <div id="code_LNR"><ol> <li> <li> <?php <li>//將陣列輸出到XML檔案</li> <li>// by MoreWindows( http://blog.csdn.net /MoreWindows )</li> <li>$article_array = array(</li> <li>"第一篇" => array(</li> <li>"title"=>"PHP存取MySql資料庫初級篇",</li> <li>"link"=>"http ://blog.csdn.net/morewindows/article/details/7102362"</li> <li>),</li> <li>"第二篇" => array(</li> <li>"title"=>"PHP存取MySql資料庫中級篇Smarty技術",</li> <li>"link"=>"http://blog.csdn.net/morewindows/article/details/7094642"</li> <li>),</li> <li>"第三篇" => array(</li> <li> "title"=>"PHP訪問MySql資料庫高級篇AJAX技術",</li> <li>"link"=>"http://blog.csdn.net/morewindows/article/details/7086524"</li> <li>),</li> <li>);</li> <li>$dom = new DOMDocument('1.0', 'UTF-8');</li> <li>$dom->formatOutput = true;</li> <li>$rootelement = $dom->createElement("MoreWindows") ;</li> <li>foreach ($article_array as $key=>$value)</li> <li>{</li> <li>$article = $dom->createElement("article", $key);</li> <li>$title = $dom-> createElement("title", $value['title']);</li> <li>$link = $dom->createElement("link", $value['link']);</li> <li>$article->appendChild($ title);</li> <li>$article->appendChild($link);</li> <li>$rootelement->appendChild($article);</li> <li>}</li> <li>$dom->appendChild($rootelement);</li> <li>$ filename = "D:test.xml";</li> <li>echo 'XML檔案大小' . $dom->save($filename) . '位元組';</li> <li>?></li> </ol></div> <em onclick="copycode($('code_LNR'));">複製代碼</em> </div> <p> 執行此PHP會在D碟上產生test.xml檔(Win7 + XAMPP + IE9.0測試通過)</p> <p><u><strong>二.讀取XML檔</strong></u> 以讀取前文產生的D:test.xml為例: </p> <div class="blockcode"> <div id="code_oek"><ol> <li> <li> <li><p><?php <li>//讀取XML檔</p></li> <li>// by MoreWindows( http://blog. csdn.net/MoreWindows )</li> <li>$filename = "D:test.xml";</li> <li>$article_array = array();</li> <li><p>$dom = new DOMDocument('1.0', 'UTF-8');</p></li> <li>$dom->load($filename);</li> <li><p>//得到<article>結點<li>$articles = $dom->getElementsByTagName( "article");</li> <li>echo '<article> 結點個數' . $articles->length;<li>foreach ($articles as $article)</li> <li>{</li> <li>$id = $article-> getElementsByTagName("id")->item(0)->nodeValue;</li> <li>$title = $article->getElementsByTagName("title")->item(0)->nodeValue;</li> <li>$link = $article ->getElementsByTagName("link")->item(0)->nodeValue;</li> <li>$article_array[$id] = array('title'=>$title, 'link'=>$link);</li> <li> }</li></article> </li></article></p></li> <li><p>//輸出結果</p></li> <li>echo "<pre class="brush:php;toolbar:false">";</pre> </li> <li>var_dump($article_array);</li> <li>echo "";</li> <li>?> </li> <li> </ol></div> <em onclick="copycode($('code_oek'));">複製程式碼</em> </div> <p>#----------------- </p> <div class="blockcode"> <div id="code_PhZ"><ol> <li> <li> <li><p><?php <li>//讀取XML檔</p></li> <li>// by MoreWindows( http://blog. csdn.net/MoreWindows )</li> <li>$filename = "D:test.xml";</li> <li>$article_array = array();</li> <li><p>$dom = new DOMDocument('1.0', 'UTF-8');</p></li> <li>$dom->load($filename);</li> <li><p>//得到<article>結點<li>$articles = $dom->getElementsByTagName( "article");</li> <li>echo '<article> 結點個數' . $articles->length;<li>foreach ($articles as $article)</li> <li>{</li> <li>$id = $article-> getElementsByTagName("id")->item(0)->nodeValue;</li> <li>$title = $article->getElementsByTagName("title")->item(0)->nodeValue;</li> <li>$link = $article ->getElementsByTagName("link")->item(0)->nodeValue;</li> <li>$article_array[$id] = array('title'=>$title, 'link'=>$link);</li> <li> }</li></article> </li></article></p></li> <li><p>//輸出結果</p></li> <li>echo "<pre class="brush:php;toolbar:false">";</pre> </li> <li>var_dump($article_array);</li> <li>echo "";</li> <li>?> </li> <li> </ol></div> <em onclick="copycode($('code_PhZ'));">複製程式碼</em> </div>


陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn