[請益] 如何搜尋XML並依照條件刪除整個child?
(原始 XML 檔案 "data.xml")
|<?xml version="1.0" encoding="utf-8"?>
|<album>
| <img src="pic1.jpg" width="100" height="100"/>
| <img src="pic2.jpg" width="100" height="100"/>
| <img src="pic3.jpg" width="100" height="100"/>
|</album>
請問要怎麼用利用 php 讀取 "data.xml",
找出 <img> 裡 attribute "src" 包含字串 "pic2.jpg",
並且將這整行刪除並儲存,使得 XML 檔案結果為:
(修改過的 XML 檔案 "data.xml")
|<?xml version="1.0" encoding="utf-8"?>
|<album>
| <img src="pic1.jpg" width="100" height="100"/>
| <img src="pic3.jpg" width="100" height="100"/>
|</album>
我目前使用了三種方式,都失敗,不知道問題在哪,請高手指點指點
<法一>
|$xdoc=simplexml_load_file("data.xml");
|foreach($xdoc->img as $ximg) {
| if($ximg['src'] == "pic2.jpg") {
| $dom=dom_import_simplexml($ximg);
| $dom->parentNode->removeChild($dom);
| }
|}
<法二>
|$imgfile = new DomDocument();
|$imgfile->load("data.xml");
|$simgfile = simplexml_load_file("data.xml");
|$count = 0;
|foreach($simgfile->img as $src) {
| if ($src['src'] == $img) {
| $imgfile->documentElement->removeChild($imgfile->
|(太長換行原本跟上行連在一起) documentElement->childNodes->item($count));
| $count--;
| }
| $count++;
|}
|$imgfile->saveXML();
<法三>
|$xdoc = new DOMDocument;
|$xdoc->load('data.xml');
|$xgallery = $xdoc->documentElement;
|$imgsrc = $xgallery->getElementsByTagName('img')->item(0);
|if($imgsrc->hasAttribute('src') == $img) {
| $delimg = $xgallery->removeChild($imgsrc);
| $xdoc->saveXML();
|}
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 220.143.220.20
※ 編輯: mmeow 來自: 220.143.220.20 (11/18 03:13)
※ 編輯: mmeow 來自: 220.143.219.9 (11/18 13:21)
討論串 (同標題文章)
完整討論串 (本文為第 1 之 2 篇):
PHP 近期熱門文章
PTT數位生活區 即時熱門文章