dmaster
dmaster

Reputation: 23

xml manipulation with php

I am new to PHP so maybe this is silly question. How can I easily manipulate with xml document using PHP and get data from it? Can someone show me some example how it is done?

I tried this:

<?xml version="1.0" encoding="ISO-8859-1"?>
<note>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note> 

And this is my php:

<?php
$xml = simplexml_load_file("test.xml");

echo $xml->getName() . "<br />";

foreach($xml->children() as $child)
{
 echo $child->getName() . ": " . $child . "<br />";
}
?> 

This works for only this document, but when i try some bigger xml it doesn't work. It only writes back one tag all the time.

Upvotes: 1

Views: 151

Answers (1)

user1598696
user1598696

Reputation: 560

Your problem is that with your code you only fetch first nodes of xml documents. Try like this:

                $xml = simplexml_load_file($url) ;
                echo '<br /><b>all of the data:</b>'.'<br>  </br><div class="data">';
                echo $xml->getName() . "<br />"; 
                foreach($xml -> children() as $name => $child ){
                echo $name.'<br />';
                    foreach($child -> children() as $name1 => $child1  ) {
                    echo $name1.'<br />'; //fetching children nodes
                        foreach($child1 -> children() as $name2 => $child2  ) {
                        echo $name2.'<br />';
                        }
                        // ..... and so on...depends how deep is you node tree
                    }

                }

you can use xpath to fetch what you want. It's easy and you can build queries with it. Try like this:

                $result=$xml->xpath($your_query);
                foreach($result as $bla) {
                    echo "$bla<br />";
                    }

You can use this CD catalog to test you code: http://www.w3schools.com/xml/cd_catalog.xml

Here are some examples of using xpath: http://www.w3schools.com/xpath/xpath_examples.asp

Upvotes: 2

Related Questions