程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> PHP讀寫XML文件技巧

PHP讀寫XML文件技巧

編輯:關於PHP編程

     常用 如下 幾行:

    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] <?xml version="1.0" encoding="UTF-8"?>
    <article>
    <title>PHP訪問MySql數據庫 初級篇</title>
    <link>http://blog.csdn.net/morewindows/article/details/7102362</link>
    </article>
    <?xml version="1.0" encoding="UTF-8"?>
    <article>
    <title>PHP訪問MySql數據庫 初級篇</title>
    <link>http://blog.csdn.net/morewindows/article/details/7102362</link>
    </article>
    我們來看看如何用PHP來生成:

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

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

    $dom->formatOutput= true;

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

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

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

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

    $link =$dom->createElement("link","http://blog.csdn.net/morewindows/article/details/7102362");

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

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

    $linktext =$dom->createTextNode('http://blog.csdn.net/morewindows/article/details/7102362');

    $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>http://blog.csdn.net/morewindows/article/details/7102362</link>

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

    [php] <?php
    //將數組輸出到XML文件中
    // by MoreWindows( http://blog.csdn.net/MoreWindows )
    $article_array = array(
    "第一篇" => array(
    "title"=>"PHP訪問MySql數據庫 初級篇",
    "link"=>"http://blog.csdn.net/morewindows/article/details/7102362"
    ),
    "第二篇" => array(
    "title"=>"PHP訪問MySql數據庫 中級篇 Smarty技術",
    "link"=>"http://blog.csdn.net/morewindows/article/details/7094642"
    ),
    "第三篇" => array(
    "title"=>"PHP訪問MySql數據庫 高級篇 AJAX技術",
    "link"=>"http://blog.csdn.net/morewindows/article/details/7086524"
    ),
    );
    $dom = new DOMDocument('1.0', 'UTF-8');
    $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:test.xml";
    echo 'XML文件大小' . $dom->save($filename) . '字節';
    ?>
    <?php
    //將數組輸出到XML文件中
    // by MoreWindows( http://blog.csdn.net/MoreWindows )
    $article_array = array(
    "第一篇" => array(
    "title"=>"PHP訪問MySql數據庫 初級篇",
    "link"=>"http://blog.csdn.net/morewindows/article/details/7102362"
    ),
    "第二篇" => array(
    "title"=>"PHP訪問MySql數據庫 中級篇 Smarty技術",
    "link"=>"http://blog.csdn.net/morewindows/article/details/7094642"
    ),
    "第三篇" => array(
    "title"=>"PHP訪問MySql數據庫 高級篇 AJAX技術",
    "link"=>"http://blog.csdn.net/morewindows/article/details/7086524"
    ),
    );
    $dom = new DOMDocument('1.0', 'UTF-8');
    $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:test.xml";
    echo 'XML文件大小' . $dom->save($filename) . '字節';
    ?>
    運行該PHP會在D盤上生成test.xml文件(Win7 + XAMPP + IE9.0測試通過)

     

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

    [php] <?php
    //讀取XML文件
    // by MoreWindows( http://blog.csdn.net/MoreWindows )
    $filename = "D:test.xml";
    $article_array = array();

    $dom = new DOMDocument('1.0', 'UTF-8');
    $dom->load($filename);

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

    //輸出結果
    echo "<pre>";
    var_dump($article_array);
    echo "</pre>";
    ?>
    <?php
    //讀取XML文件
    // by MoreWindows( http://blog.csdn.net/MoreWindows )
    $filename = "D:test.xml";
    $article_array = array();

     

    $dom = new DOMDocument('1.0', 'UTF-8');
    $dom->load($filename);

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

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

    1. 上一頁:
    2. 下一頁:
    Copyright © 程式師世界 All Rights Reserved