login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Xpath met PHP op een XML file (Opgelost)

Offline WouterPSV - 07/02/2011 13:38 (laatste wijziging 07/02/2011 13:46)
Avatar van WouterPSVLid Hey,

Ik heb een XML Bestand.

Hier instaat een MediaLijst met soms wel 20 verschillende Media Items
Ze zijn opgemaakt op de volgende manier

  1. <Media>
  2. <Id>1</Id>
  3. <Groep>HoofdFoto</Groep>
  4. &#8722;
  5. <URL>
  6. http://images.realworks.nl/servlets/images/media.objectmedia/4340630?height=1600&check=md5%3A2d2388de54f05957dae94c8e06727d94&width=1600
  7. </URL>
  8. <MediaUpdate>2007-05-10</MediaUpdate>
  9. </Media>


Wie kan mij zeggen hoe ik de URL van een Media node kan selecteren waar het id =1 of Groep= Hoofdfoto.

Ik heb al dit aan code
  1. <?php
  2. $xml = simplexml_load_file('http://whdesign.nl/WONEN_20101210.xml');
  3. $results = $xml->xpath('//MediaLijst/Media/Id[.=1]');
  4.  
  5. print_r($results);
  6. ?>


Alvast bedank voor een antwoord, want kom er even niet meer uit..

4 antwoorden

Gesponsorde links
Offline DenMette - 07/02/2011 14:28 (laatste wijziging 07/02/2011 14:57)
Avatar van DenMette PHP gevorderde Als je van je results een array krijgt, dan kan je het oplossen met een foreach 

  1. <?php
  2. $a = array(array("Id" => 1, "URL" = "http://hierEenUrl.te", "MediaUpdate" => "hehe"),array("Id" => 1, "URL" = "http://hierEenUrl.te", "MediaUpdate" => "hehe"),array("Id" => 1, "URL" = "http://hierEenUrl.te", "MediaUpdate" => "hehe"),array("Id" => 1, "URL" = "http://hierEenUrl.te", "MediaUpdate" => "hehe"),array("Id" => 1, "URL" = "http://hierEenUrl.te", "MediaUpdate" => "hehe"));
  3.  
  4. foreach($a as $media) {
  5. foreach($media as $k => $v) {
  6. if($k == "URL") {
  7. echo $v;
  8. }
  9. }
  10. }
  11. // Of je kan ook
  12. for($i = 0; $i < count($a); $i++) {
  13. echo $a[$i]["URL"];
  14. }



Hopelijk is het wat duidelijk je kan door middel van vierkante haakjes zorgen dat je een element uit een array halen.

Ik weet niet wat die xPath gaat geven, maar ik veronderstel een array.
Ik google nog eens extra mee.
Offline WouterPSV - 07/02/2011 14:47 (laatste wijziging 07/02/2011 15:09)
Avatar van WouterPSV Lid Die array geeft alleen maar
  1. [7] => SimpleXMLElement Object ( [0] => 1 )



EDIT:

Je was een " vergeten, maar nu krijg ik die array mooi terug met de url's die er in staan. Alleen hoe zou ik dit nu kunnen toepassen op mijn XML document.?
Offline DenMette - 07/02/2011 20:23 (laatste wijziging 07/02/2011 21:09)
Avatar van DenMette PHP gevorderde Beste,

  1. <pre>
  2.  
  3. <?php
  4. try {
  5. // Load XML file
  6. $oXML = simplexml_load_file('./xmltest.xml');
  7.  
  8. // xPath
  9. $aResult = $oXML->xpath('//medialijst/media');
  10. echo "Count: " . count($aResult) . "<br />";
  11. for($i = 0; $i < count($aResult); $i++) {
  12. echo (string)$oXML->media[$i]->url . "<br />";
  13. }
  14. }
  15. catch(Exception $e) {
  16. echo $e;
  17. }
  18. ?>
  19.  
  20. </pre>


Dat is de code , nu voor mijn document, hoe het ongeveer is opgesteld als jou werkt dit, op de volgende url kan je de XML bekijken.

Plaatscode: 140650
Bedankt door: WouterPSV
Offline WouterPSV - 07/02/2011 23:23 (laatste wijziging 07/02/2011 23:35)
Avatar van WouterPSV Lid Ziet er goed uit, maar hij zit nog binnen een object node. En daarboven zit ook nog informatie. Als ik die toevoegen aan jouw xml file dan laat die alleen het aantal de count zien niet de urls.

EDIT:

Het is inmiddels opgelost! Thnx voor je help! Ga hier wel verder mee komen!
Gesponsorde links
Je moet ingelogd zijn om een reactie te kunnen posten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.214s