1

次のような XML ファイルがあります。

<T_Person>
<Person>
 <ID_Person>5B32EB71-E527-482B-B01B-07502D968E70</ID_Person>
 <First_Name_Person>u</First_Name_Person>
</Person>
<Person>
 <ID_Person>C47E80CF-6BDB-49CE-BCF4-20E7E08835BF</ID_Person>
 <First_Name_Person>l</First_Name_Person>
 </Person>
<Person>
 <ID_Person>84E8912E-B8F8-4A94-89D6-21B996C69363</ID_Person>
 <First_Name_Person>n</First_Name_Person>
</Person>
<Person>
 <ID_Person>3DFBDC33-F03E-4579-9D93-256A0FE1BCDA</ID_Person>
 <First_Name_Person>h</First_Name_Person>
</Person>
</T_Person>

選択した要素を削除したい場合ID_person、どうすればよいですか?

$person = $data->getElementsByTagName('Person')->item(0);
$delete = $data->removeChild($person);

それを実行すると、一番上の要素が削除されます。ランダムな要素を削除したい場合はどうすればよいですか?

4

1 に答える 1

0

ID で要素を削除するには:

$id = '84E8912E-B8F8-4A94-89D6-21B996C69363';
$people = $data->getElementsByTagName('Person');
$toRemove = null;

foreach ($people as $person) {
    $personId = $person->getElementsByTagName('ID_Person')->item(0)->nodeValue;

    // have to be careful with removeChild in a foreach loop
    if ($personId === $id) {
        $toRemove = $person;
    }
}

if ($toRemove) {    
    $delete = $data->removeChild($toRemove);
}

スクリプトの例を次に示します。

ランダムな要素を削除するには、次を使用しますrand

$people = $data->getElementsByTagName('Person');
$person = $people->item(rand(1, $people->length) - 1);
$delete = $data->removeChild($person);

参照: rand() のドキュメントDOMNodeList

于 2013-11-07T09:56:20.720 に答える