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 :)
Annonceindlæg fra DE-CIX
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>
27. november 2008 - 16:06
#2
få = forstå
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'); ?>
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 :)
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.
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?
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'); ?>
19. januar 2009 - 02:11
#8
OK ?
Vi tilbyder markedets bedste kurser inden for webudvikling