熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> PHP編程 >> 正文

PHP讀寫XML文件技巧

2013-11-15 12:25:14  來源: PHP編程 

  常用 如下 幾行

  header("contenttype:text/html; charset=utf"); //指定PHP使用UTF編碼
$xml = simplexml_load_file("examplexml"); //讀取xml文件
$newxml = $xml>asXML(); //標准化$xml
$fp = fopen("newxmlxml" "w"); //新建xml文件
fwrite($fp $newxml); //寫入xml文件
fclose($fp);

  PHP可以方便的生成和讀取XML文件PHP主要通過DOMDocumentDOMElement和DOMNodeList來完成XML的讀取與寫入操作的下面就簡要說明下如何使用這些類

  一.生成XML文件
對於一個如下XML文件

  [html] <?xml version="" encoding="UTF"?>
<article>
<title>PHP訪問MySql數據庫 初級篇</title>
<link>
</article>
<?xml version="" encoding="UTF"?>
<article>
<title>PHP訪問MySql數據庫 初級篇</title>
<link>
</article>
我們來看看如何用PHP來生成

  首先new一個DOMDocument對象並設置編碼格式

  $dom = newDOMDocument( UTF);

  $dom>formatOutput= true;

  再創建<article>結點和<title>結點

  $rootelement =$dom>createElement("article");

  $title =$dom>createElement("title" "PHP訪問MySql數據庫 初級篇");

  然後創建帶文本內容的<link>結點

  $link =$dom>createElement("link""

  也可以先生成<link>結點再為其添加文本內容

  $link = $dom>createElement("link");

  $linktext =$dom>createTextNode();

  $link>appendChild($linktext);

  然後將<title>和<link>結點加入到<article>結點中去

  $rootelement>appendChild($title);

  $rootelement>appendChild($link);

  最後將<article>結點加入到DOMDocument對象中

  $dom>appendChild($rootelement);

  這樣一個完整的XML就生成完畢了再整出整個XML

  echo $dom>saveXML() ;

  saveXML()也可以只輸入部分XML文本如echo $dom>saveXML($link);就只會輸出<link>結點<link>

  下面再給出一個完整的PHP中數據內容輸出到XML文件的例子該例子會對將一個PHP數組輸出到XML文件中

  [php] <?php
//將數組輸出到XML文件中
// by MoreWindows(
$article_array = array(
"第一篇" => array(
"title"=>"PHP訪問MySql數據庫 初級篇"
"link"=>"
)
"第二篇" => array(
"title"=>"PHP訪問MySql數據庫 中級篇 Smarty技術"
"link"=>"
)
"第三篇" => array(
"title"=>"PHP訪問MySql數據庫 高級篇 AJAX技術"
"link"=>"
)
);
$dom = new DOMDocument( UTF);
$dom>formatOutput = true;
$rootelement = $dom>createElement("MoreWindows");
foreach ($article_array as $key=>$value)
{
$article = $dom>createElement("article" $key);
$title = $dom>createElement("title" $value[title]);
$link = $dom>createElement("link" $value[link]);
$article>appendChild($title);
$article>appendChild($link);
$rootelement>appendChild($article);
 

  }
$dom>appendChild($rootelement);
$filename = "D:testxml";
echo XML文件大小 $dom>save($filename) 字節;
?>
<?php
//將數組輸出到XML文件中
// by MoreWindows(
$article_array = array(
"第一篇" => array(
"title"=>"PHP訪問MySql數據庫 初級篇"
"link"=>"
)
"第二篇" => array(
"title"=>"PHP訪問MySql數據庫 中級篇 Smarty技術"
"link"=>"
)
"第三篇" => array(
"title"=>"PHP訪問MySql數據庫 高級篇 AJAX技術"
"link"=>"
)
);
$dom = new DOMDocument( UTF);
$dom>formatOutput = true;
$rootelement = $dom>createElement("MoreWindows");
foreach ($article_array as $key=>$value)
{
$article = $dom>createElement("article" $key);
$title = $dom>createElement("title" $value[title]);
$link = $dom>createElement("link" $value[link]);
$article>appendChild($title);
$article>appendChild($link);
$rootelement>appendChild($article);
}
$dom>appendChild($rootelement);
$filename = "D:testxml";
echo XML文件大小 $dom>save($filename) 字節;
?>
運行該PHP會在D盤上生成testxml文件(Win + XAMPP + IE測試通過)

  二.讀取XML文件
以讀取前文中生成的D:testxml為例

  [php] <?php
//讀取XML文件
// by MoreWindows(
$filename = "D:testxml";
$article_array = array();

$dom = new DOMDocument( UTF);
$dom>load($filename);

//得到<article>結點
$articles = $dom>getElementsByTagName("article");
echo <article> 結點個數 $articles>length;
foreach ($articles as $article)
{
$id = $article>getElementsByTagName("id")>item()>nodeValue;
$title = $article>getElementsByTagName("title")>item()>nodeValue;
$link = $article>getElementsByTagName("link")>item()>nodeValue;
$article_array[$id] = array(title=>$title link=>$link);
}

//輸出結果
echo "<pre>";
var_dump($article_array);
echo "</pre>";
?>
<?php
//讀取XML文件
// by MoreWindows(
$filename = "D:testxml";
$article_array = array();

  $dom = new DOMDocument( UTF);
$dom>load($filename);

  //得到<article>結點
$articles = $dom>getElementsByTagName("article");
echo <article> 結點個數 $articles>length;
foreach ($articles as $article)
{
$id = $article>getElementsByTagName("id")>item()>nodeValue;
$title = $article>getElementsByTagName("title")>item()>nodeValue;
$link = $article>getElementsByTagName("link")>item()>nodeValue;
$article_array[$id] = array(title=>$title link=>$link);
}

  //輸出結果
echo "<pre>";
var_dump($article_array);
echo "</pre>";
?>


From:http://tw.wingwit.com/Article/program/PHP/201311/20909.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.