2011-01-08 17 views
2

を削除します。PHPのXMLは編集を追加し、私は、次のXML構造を持っている、と私はコードを持っていると思い

INSERTS

をそのTITLE値に基づいて全体の要素を削除します を削除します。

<Game type="XXX"> 
<TITLE>XXX</TITLE> 
<PUBLISHER>XXX</PUBLISHER> 
</Game> 

別の値で、出版社の価値を交換してくださいこれは私のXML構造です:

<?xml version="1.0" encoding ="utf-8"?> 
<GameStore> 
    <Game type="adventure"> 
     <TITLE>Assassin's Creed: Brotherhood</TITLE> 
     <PUBLISHER>Ubisoft</PUBLISHER> 
    </Game> 

    <Game type="adventure"> 
     <TITLE>Batman: Arkham Asylum</TITLE> 
     <PUBLISHER>Eidos</PUBLISHER> 
    </Game> 
</GameStore> 
+1

最初のものはSimpleXMLがあります。 2番目はDOMです。どちらもノードを削除するための関連部分のみを表示します。彼らはセットアップコードを含んでいません。以前の質問で判断して、DOMDocumentまたはSimpleXmlElementをインスタンス化する方法を知っています。あなたの質問は何ですか?何が効いていないのですか? – Gordon

答えて

1

foreach ($xml->Game as $node) { 
    if ($node->TITLE->nodeValue == 'some_title') { 
     $xml->removeChild($node); 
    } 
} 

など

詳細。

いくつかのヒントがあります:

SimpleXMLをを使用して
// Inserts 
$new_node = $dom->createElement('foo', 'bar'); 
$gamestore_node = $xpath->query('/*')->item(0)->appendChild($new_node); 
echo $dom->saveXML(); 

// Delete based on title 
$deletable_node = $xpath->query("//Game[TITLE/text() = 'Batman: Arkham Asylum']")->item(0); 
$deletable_node->parentNode->removeChild($deletable_node); 
echo $dom->saveXML(); 

// EDIT Replace Publisher's value with another value 
$editable_node = $xpath->query("//PUBLISHER[text() = 'Ubisoft']")->item(0); 
$editable_node->nodeValue = 'baz'; 
echo $dom->saveXML(); 
2

あなたはPHPのDOMクラスを使用したいと思うでしょう。私はそれがこのようなものになると思う。

XMLファイルを読み込みます。

$xml = new DOMDocument(); 
$xml->load('path/to/file.xml'); 

挿入します。

$node = $xml->createElement('Game'); 
$newnode = $xml->appendChild($node); 

タイトルに基づいて削除します。あなたは、XMLを操作するためのhttp://www.php.net/manual/fr/book.dom.phpを学ぶ必要があるでしょうhttp://www.php.net/manual/en/book.dom.php

3

<?php 
// load the XML file 
$games = simplexml_load_file('games.xml'); 
$i = 0; 
foreach ($games as $game) { 
    if ($game->TITLE == 'Batman: Arkham Asylum') { 
     // remove the Game element 
     unset($games->Game[$i]); 
    } 
    $i++; 
} 
// save the amended file 
$games->asXML('games2.xml'); 
?> 
関連する問題