PHP 簡單處理 XML

來源:互聯網
上載者:User
一、手動輸出xml

/* * 手動輸出xml * @author flyer0126 * @since 2012/4/27 */header("Content-Type:text/xml");print '<?xml version="1.0"?>'."\n";print "<shows>\n";$shows = array(                array(                        'name' => 'aa',                        'channel' => 'a1',                        'start' => 'a2'                ),                array(                        'name' => 'bb',                        'channel' => 'b1',                        'start' => 'b2'                ),                array(                        'name' => 'cc',                        'channel' => 'c1',                        'start' => 'c2'                ));foreach($shows as $show){    print "<show>\n";    foreach($show as $tag => $val)    {        print "<$tag>".htmlspecialchars($val)."</$tag>\n";    }    print "</show>\n";}print "</shows>\n";/**<?xml version="1.0"?><shows><show><name>aa</name><channel>a1</channel><start>a2</start></show><show><name>bb</name><channel>b1</channel><start>b2</start></show><show><name>cc</name><channel>c1</channel><start>c2</start></show></shows>**/

二、通過DOMDocument產生xml

/* * 通過DOMDocument產生xml * @author flyer0126 * @since 2012/4/27 */// 建立新文檔$dom = new DOMDocument("1.0", "UTF-8");// 建立根項目humans,並將其添加至文檔$humans = $dom->appendChild($dom->createElement("humans"));// 建立根項目zhangying,並將其添加至humans$zhangying = $humans->appendChild($dom->createElement("zhangying"));// 建立name元素,並將其添加至zhangying$name = $zhangying->appendChild($dom->createElement("name"));$name->appendChild($dom->createTextNode("張映"));$sex = $zhangying->appendChild($dom->createElement("sex"));$sex->appendChild($dom->createTextNode("男"));$old = $zhangying->appendChild($dom->createElement("old"));$old->appendChild($dom->createTextNode("28"));// 建立根項目tank,並將其添加至humans$tank = $humans->appendChild($dom->createElement("tank"));// 建立name元素,並將其添加至tank$name = $tank->appendChild($dom->createElement("name"));$name->appendChild($dom->createTextNode("tank"));$sex = $tank->appendChild($dom->createElement("sex"));$sex->appendChild($dom->createTextNode("男"));$old = $tank->appendChild($dom->createElement("old"));$old->appendChild($dom->createTextNode("28"));/*// 設定author元素$author = $book->appendChild($dom->createElement("author"));$author->appendChild($dom->createTextNode("zhangh"));$author->setAttribute("class", "win_close");*/// 輸出$dom->formatOutput = true;header('Content-Type:text/xml');echo $dom->saveXML();// 將文檔表現形式放於book變數中//$book = $dom->saveXML();// 將文檔輸出為book.xml檔案//$dom->save("humans.xml");/**    <?xml version="1.0 encoding="UTF-8"?>    <humans>    <zhangying>    <name>張映</name>    <sex>男</sex>    <old>28</old>    </zhangying>    <tank>    <name>tank</name>    <sex>男</sex>    <old>28</old>    </tank>    </humans>  **/

三、xml的讀取

/* * xml的讀取 * @author flyer0126 * @since 2012/4/27 */// 1. 利用simplexml_load_file讀取簡單的xml檔案$humans = simplexml_load_file("humans.xml");foreach($humans as $key => $human){    echo $human->name."->".$human->sex."->".$human->old."\n";}/**張映->男->28tank->男->28**/// 2. 利用DOMDocument讀取xml$dom = new DOMDocument();$dom->load("humans.xml");$humans = $dom->getElementsByTagName("humans");foreach($humans as $key=>$human){$names = $human->getElementsByTagName("name");$olds = $human->getElementsByTagName("old");$sexes = $human->getElementsByTagName("sex");foreach($names as $k=>$name){$name = $names->item($k)->nodeValue;$sex = $sexes->item($k)->nodeValue;$old = $olds->item($k)->nodeValue;echo "$name->$sex->$old\n";}}/**張映->男->28tank->男->28**/// 3. 利用正則來擷取資料$xml = '';$f = fopen("humans.xml", "r");while($data = fread($f, 2096)){$xml .= $data;}fclose($f);preg_match_all('/\<humans\>(.*?)\<\/humans\>/s', $xml, $humans);foreach($humans[1] as $human){preg_match_all('/\<name\>(.*?)\<\/name\>/s', $human, $names);preg_match_all('/\<sex\>(.*?)\<\/sex\>/s', $human, $sexes);preg_match_all('/\<old\>(.*?)\<\/old\>/s', $human, $olds);}foreach($names[1] as $k=>$name){echo $names[1][$k].'-'.$sexes[1][$k].'-'.$olds[1][$k]."\n";}/**張映->男->28tank->男->28**/// 4. 利用XMLReader擷取資料$reader = new XMLReader();$reader->open("humans.xml");$i = 1;while($reader->read()){if($reader->nodeType == XMLReader::TEXT){if($i%3){echo $reader->value;}else{echo $reader->value."\n";}$i++;}}/**張映男28tank男28**/
  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.