hallo,

Ik heb een xml bestand gemaakt die er als volgt uit ziet:
<viewers>
<viewer>
<name>gebruiker1</name>
<status>online</status>
</viewer>
<viewer>
<name>gebruiker2</name>
<status>online</status>
</viewer>
<viewer>
<name>gebruiker3</name>
<status>online</status>
</viewer>
<viewers>

Nu wil ik dus dat als gebruiker 2 offline gaat dat zijn rij verwijdert wordt
en er het volgende komt te staan:

<viewers>
<viewer>
<name>gebruiker1</name>
<status>online</status>
</viewer>
<viewer>
<name>gebruiker3</name>
<status>online</status>
</viewer>
<viewers>

alvast bedankt
Hoe maak je je XML überhaupt op? Of is dit gewoon een handmatig XML bestand?
Denk niet dat het er toe doet?

Maar het is handmatig en ik voeg nieuwe rijen toe met simplexml
lol je gebruikt xml hiervoor :P ik zou json gebruiken maja

Mogen we een stukje van je code zien?
Peter schreef op 07.01.2010 15:21
lol je gebruikt xml hiervoor :P ik zou json gebruiken maja

Mogen we een stukje van je code zien?

Volgens mij werkt xml best. Dat gebruik je sowieso meestal met AJAX ;-).
Zie ditstacoverflow[/url] topic hoe je elementen uit een xml bestand verwijderd. Er staat voor [php]dom[/php] en [php]simplexml[/php] beschreven.
Ja dat heb ik een beetje gezien maar het ingewikkelde voor mij is.

ik wil zoeken op bijvoorbeeld de name en dan dat de hele viewer verwijderen.

Maar daar kom ik niet uit.
Ik heb deze script gebruikt met bovenstaande xml

<?php
//update users list
$userfile = new DomDocument();
$userfile->load("viewer.xml");

$suser = simplexml_load_file("viewer.xml");
$count = 0;
foreach($suser->user as $user) {
if ($user['name'] == $name) {
$userfile->documentElement->removeChild($userfile->documentElement->childNodes->item($count));
$count--;
}
$count++;
}

$userfile->save("viewer.xml");
?>
maar hij haalt het niet weg.
Op deze manier doe ik het:

<?php
/* Een nieuw bericht toevoegen */

# Bericht
$message = 'mijn berichtje';

# Bestand ophalen
$xml = simplexml_load_file('bestand.xml');

# Childs toevoegen
$nieuw_bericht = $xml->addChild('bericht');
$nieuw_bericht->addChild('name', 'Henk');
$nieuw_bericht->addChild('message', $message);

# Opslaan
$xml->asXML('bestand.xml');
?>

<?php
/* Een bericht verwijderen */

# Bericht
$message = 'mijn berichtje';

# Bestand ophalen
$xml = simplexml_load_file('bestand.xml');

$dom = dom_import_simplexml($bericht);

# Verwijderen Child
$dom->parentNode->removeChild($dom);

#opslaan
file_put_contents('bestand.xml', $xml->asXML());
?>
magic schreef op 07.01.2010 16:50
Ik heb deze script gebruikt met bovenstaande xml

<?php
//update users list
$userfile = new DomDocument();
$userfile->load("viewer.xml");

$suser = simplexml_load_file("viewer.xml");
$count = 0;
foreach($suser->user as $user) {
if ($user['name'] == $name) {
$userfile->documentElement->removeChild($userfile->documentElement->childNodes->item($count));
$count--;
}
$count++;
}

$userfile->save("viewer.xml");
?>
maar hij haalt het niet weg.

Dan heb je dat topic niet goed gelezen.
Er wordt duidelijk uitgelegd voor [php]simplexml[/php] en [php]dom[/php].
Je gebruikt nu dom methodes bij simplexml. Dat werkt niet.
Maar je kunt gewoon simpel [php]domdocument.load[/php] gebruiken i.p.v. die simplexml_load.

Reageren