Avatar billede alios Nybegynder
27. november 2008 - 15:55 Der er 8 kommentarer

XML og php

Hejsa, jeg har et xml dokument som ser således ud: ( music.xml )

<?xml version="1.0" encoding="utf-8"?>
<music>
    <sound>
        <title>Test</title>
        <artist>Test Artist</artist>
        <genre>Test Genre</genre>
    </sound>
</music>

Er der nogen der kan hjælpe mig med at få php til at fjerne <sound></sound> og alt hvad der er imellem? og derefter overskrive det gamle music.xml.
Har kigget på simpleXML men kan ikke få det til at virke :(

på forhånd tak :)
Avatar billede expnet Seniormester
27. november 2008 - 16:05 #1
skal man få at du vil have den til at se sådan ud enden den overskrive filen music.xml

<?xml version="1.0" encoding="utf-8"?>
<music>
    <title>Test</title>
    <artist>Test Artist</artist>
    <genre>Test Genre</genre>
</music>
Avatar billede expnet Seniormester
27. november 2008 - 16:06 #2
få = forstå
Avatar billede arne_v Ekspert
27. november 2008 - 16:07 #3
Hvis du vil fjerne sound og alt imellem så:

<?php
$doc = new DOMDocument();
$doc->load('C:\before.xml');
$sounds = $doc->getElementsByTagName('sound');
foreach($sounds as $sound) {
    $sound->parentNode->removeChild($sound);
}
$doc->save('C:\after.xml');
?>
Avatar billede alios Nybegynder
27. november 2008 - 16:45 #4
Tusind tak, kan du så også fortælle mig hvis det så således ud:

<?xml version="1.0" encoding="utf-8"?>
<music>
    <sound name="testName">
        <artist>Test Artist</artist>
        <genre>Test Genre</genre>
        <type>mp3</type>
    </sound>
        <sound name="testName2">
        <artist>Test Artist</artist>
        <genre>Test Genre</genre>
        <type>mp3</type>
    </sound>
</music>

og den skal fjerne alt mellem <sound name="testName"> og </sound>

på forhånd tak :)
Avatar billede arne_v Ekspert
27. november 2008 - 16:52 #5
Min kode fjerner begge sound elementerne med under elementer.

Hvis du kun vil fjerne det første så skal vi vide lidt mere præcist hvordan kriteriet for
slet eller behold er.
Avatar billede alios Nybegynder
27. november 2008 - 16:57 #6
Det der skal afgøre om det bliver slettet skulle gerne være name="testName" hvis dette kan lade sig afgøre?
Avatar billede arne_v Ekspert
27. november 2008 - 17:15 #7
Så prøv den her:

<?php
$doc = new DOMDocument();
$doc->load('C:\before.xml');
$xpath = new DOMXPath($doc);
$res = $xpath->query('//music/sound[@name="testName"]');
$togo = $res->item(0);
$togo->parentNode->removeChild($togo);
$doc->save('C:\after.xml');
?>
Avatar billede arne_v Ekspert
19. januar 2009 - 02:11 #8
OK ?
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester