I have an XML file with this structure:
<markers>
<marker>
<marker_id>...</marker_id>
<map_id>...</map_id>
<title>Test Location 1</title>
<address>Blah Blah Blah</address>
<desc/>
<pic/>
<icon>...</icon>
<linkd/>
<lat>...</lat>
<lng>...</lng>
<anim>...</anim>
<category>...</category>
<infoopen>...</infoopen>
</marker>
</markers>
Basically it's pulling data from a Google Maps location XML file.
I need to echo the bit only
Here's what I have so far:
<?php
$url = 'myurl/1markers.xml';
$file = file_get_contents($url);
$xml = simplexml_load_string($file);
foreach($xml->markers as $x) {
$location = $x->marker->title;
echo $location;
}
?>
It doesn't seem to be echoing...?
I've probably not done it right somewhere in the foreach, can anybody see what I'm missing?
Thanks
Mark
Use simplexml_load_file()
<?php
$xml = simplexml_load_file("new.xml");
foreach($xml as $x) {
$location = $x->title;
echo $location;
}
?>
markers is a root tag. Refering to http://php.net/manual/en/simplexml.examples-basic.php, your code should look like:
foreach($xml->marker as $x) {
echo $x->title;
}
Could be useful to replace the file_get_contents: http://www.php.net/manual/en/function.simplexml-load-file.php
<?php
$XML = <<<'XML'
<markers>
<marker>
<marker_id>...</marker_id>
<map_id>...</map_id>
<title>Test Location 1</title>
<address>Blah Blah Blah</address>
<desc/>
<pic/>
<icon>...</icon>
<linkd/>
<lat>...</lat>
<lng>...</lng>
<anim>...</anim>
<category>...</category>
<infoopen>...</infoopen>
</marker>
</markers>
XML;
$xml = simplexml_load_string($XML);
//This seems to fix things, issue was that you were trying to access the root tag which is implied.
foreach($xml->marker as $x) {
$location = $x->title;
var_dump($location);
}
?>