1
最初我想將XML文件分成兩個文件。所以我必須刪除一些元素。使用PHP從XML中刪除某些元素
XML看起來是這樣的:
<?xml version="1.0"?>
<events>
<event>
<id>1</id>
<typ>new</typ>
</event>
<event>
<id>2</id>
<typ>new</typ>
</event>
<event>
<id>3</id>
<typ>old</typ>
</event>
<event>
<id>4</id>
<typ>new</typ>
</event>
<event>
<id>5</id>
<typ>old</typ>
</event>
<event>
<id>6</id>
<typ>old</typ>
</event>
<event>
<id>7</id>
<typ>old</typ>
</event>
</events>
我需要的是:
<?xml version="1.0"?>
<events>
<event>
<id>1</id>
<typ>new</typ>
</event>
<event>
<id>2</id>
<typ>new</typ>
</event>
<event>
<id>4</id>
<typ>new</typ>
</event>
</events>
所以我必須刪除所有事件與typ
= old
。我試過這樣:
$events = file_get_contents("events.xml");
$doc = new SimpleXMLElement($events);
foreach($doc->event as $seg)
{
if ($seg->typ == 'new') {
echo "$seg->typ<br />";
unset($doc->event[$seg]);
}
}
echo $doc->asXml();
但只有回聲是正確的,其餘的仍然是一樣的。 後來我發現這個功能:
function delete_event_typ($typ, $filename = 'events.xml'){
$data = simplexml_load_file($filename);
for($i = 0, $length = count($data->event); $i < $length; $i++){
if($data->event[$i]->typ == $typ){
unset($data->event[$i]);
}
}
file_put_contents($filename, $data->saveXML());
}
//SAMPLE USAGE
delete_event_typ('old');
但不刪除所有條目,它看起來像:
<?xml version="1.0"?>
<events>
<event>
<id>1</id>
<typ>new</typ>
</event>
<event>
<id>2</id>
<typ>new</typ>
</event>
<event>
<id>4</id>
<typ>new</typ>
</event>
<event>
<id>6</id>
<typ>old</typ>
</event>
</events>
所以我還能怎麼辦?有任何想法嗎?
非常感謝你,這樣的簡單和好! – Bazi
歡迎您! – splash58