Toon posts:

haal image van xml in php

Pagina: 1
Acties:

Vraag


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Mijn vraag
Ik haal gegevens van een xml file op. Nu wil ik een foto ophalen uit de xml file. Dit is de code in de xml file: <image size="large">
https://lastfm-img2.akama...4038a2505edd5cf4a184e.png
</image>. Om gegevens van de xml file in php uit te lezen gebruik ik dit stukje code: $xml->track->image->size. Voor alle andere gegevens lukt het, maar ik weet niet hoe ik de afbeelding in php kan uit lezen. Is er iemand die me zou kunnen helpen?

Relevante software en hardware die ik gebruik
...

Wat ik al gevonden of geprobeerd heb
$xml->track->image->size

Alle reacties


Acties:
  • 0 Henk 'm!

  • DJMaze
  • Registratie: Juni 2002
  • Niet online
Koffiedik:
PHP:
1
(string) $xml->track->image


Maar doe eens de uitkomst van het volgende hier posten:
PHP:
1
var_dump($xml->track->image);

[ Voor 57% gewijzigd door DJMaze op 02-03-2017 15:54 ]

Maak je niet druk, dat doet de compressor maar


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Dit is de uitkomt: object(SimpleXMLElement)#4 (0) { }

En (string) moet dan de size="large" zijn?

[ Voor 40% gewijzigd door Verwijderd op 02-03-2017 16:00 ]


Acties:
  • +1 Henk 'm!

  • Amelandbor
  • Registratie: September 2005
  • Laatst online: 10:37
Zijn er überhaupt andere image sizes?

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ja er zijn nog andere:

<image size="small">
<image size="medium">
<image size="large">
<image size="extralarge">

Acties:
  • 0 Henk 'm!

  • Amelandbor
  • Registratie: September 2005
  • Laatst online: 10:37
Dan is de makkelijkste manier om xpath te gebruiken.

Acties:
  • 0 Henk 'm!

  • edwardmp
  • Registratie: Januari 2013
  • Laatst online: 26-09 13:08
Post eens je volledige code van wat je nu hebt, dan maak ik wel een voorbeeldje voor je.

Acties:
  • 0 Henk 'm!

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 12:04

Creepy

Tactical Espionage Splatterer

pmdrawde schreef op vrijdag 3 maart 2017 @ 21:22:
Post eens je volledige code van wat je nu hebt, dan maak ik wel een voorbeeldje voor je.
Dat is aardig van je, maar eigenlijk niet de bedoeling. 9 van de 10 keer wordt de werkende code gekopieerd en geplakt zonder dat de topicstarter er dan wat van leert. En dat laatste is nu net wel de bedoeling. Het draait hier om zelf programmeren, en niet om anderen dat voor je te laten doen...

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


Acties:
  • 0 Henk 'm!

  • TheDevilOnLine
  • Registratie: December 2012
  • Laatst online: 06-06 22:54
Helaas geef je wat weinig informatie, maar het ziet er naar uit dat je SimpleXMLElement gebruikt binnen PHP.

Wat heel erg helpt in dit soort gevallen, is het gebruik van var_dump, gevolgd door een die() statement.

Voorbeeld:
PHP:
1
2
3
4
5
// Laad voorbeeld XML
$xml = new SimpleXMLElement("<?xml version=\"1.0\" encoding=\"utf-8\" ?><root><track><image size=\"medium\">medium image url</image><image size=\"large\">large image url</image></track></root>");

var_dump($xml->track->image);
die();


Let op: Zoals je misschien opvalt wordt het eerste XML element (in dit geval <root>) niet gebruikt in de PHP-code. Mogelijk dat om deze reden de var_dump die je al geprobeerd had leeg was.

Het resultaat hiervan is:
object(SimpleXMLElement)#4 (3) {
  ["@attributes"]=>
  array(1) {
    ["size"]=>
    string(6) "medium"
  }
  [0]=>
  string(12) "medium image url"
  [1]=>
  string(11) "large image url"
}


Vooral die [0] en [1] zijn interessant, dit wijst op een array. Probeer daarom eens het volgende:

PHP:
1
2
3
4
5
// Laad voorbeeld XML
$xml = new SimpleXMLElement("<?xml version=\"1.0\" encoding=\"utf-8\" ?><root><track><image size=\"medium\">medium image url</image><image size=\"large\">large image url</image></track></root>");

var_dump($xml->track->image[0]);
die();


Het resultaat hiervan is:
object(SimpleXMLElement)#3 (2) {
  ["@attributes"]=>
  array(1) {
    ["size"]=>
    string(6) "medium"
  }
  [0]=>
  string(12) "medium image url"
}


Ik ga er vanuit dat je hiermee verder kan.

Nog wel een paar tips: ga er niet vanuit dat de images altijd in de zelfde volgorde staan. Schrijf dus een loopje (waarbij je $xml->track->image als array behandeld), waarin je op zoek gaat naar de juiste image. Denk er ook over na wat je wilt doen als je gewenste afbeelding er niet bij zit, bijv. als er geen large is, dan gebruik je de medium image.
Pagina: 1