Hi,

Can any one provide me small code or way how can I read the below XML file in PHP.

<Countries>
<Country>
    <Page1_col1>Country1</Page1_col1>
    <Page1_col2>89,921</Page1_col2>
    <Page1_col2>61</Page1_col2>

    <Country_sub_details>
        <Page2_col1>A1</Page2_col1>
        <Page2_col2>1,187</Page2_col2>
        <Page2_col3>45</Page2_col3>

        <Country_sub_sub_details>
                <Page3_col1>AA1</Page3_col1>
                <Page3_col2>375</Page3_col2>
                <Page3_col3>45</Page3_col3>
        </Country_sub_sub_details>
    </Country_sub_details>
</Country>
</Countries>

I am not aware about the XML libraries in PHP.

Recommended Answers

All 2 Replies

Hi
You can read easily an XML document in PHP with simpleXML, it takes all the XML elements as a hierarchical tree.
Here is a code for your XML (For more details and examples with simpleXML, see this tutorial: http://www.coursesweb.net/php-mysql/php-simplexml ):

<?php
$xml = '<Countries>
  <Country>
    <Page1_col1>Country1</Page1_col1>
    <Page1_col2>89,921</Page1_col2>
    <Page1_col2>61</Page1_col2>
    <Country_sub_details>
    <Page2_col1>A1</Page2_col1>
    <Page2_col2>1,187</Page2_col2>
    <Page2_col3>45</Page2_col3>
    <Country_sub_sub_details>
    <Page3_col1>AA1</Page3_col1>
    <Page3_col2>375</Page3_col2>
    <Page3_col3>45</Page3_col3>
    </Country_sub_sub_details>
    </Country_sub_details>
  </Country>
</Countries>';
//  load the content of the XML file and create a new XML object
$xmlobj = simplexml_load_string($xml);

// get and prints the name of the first element (root)
echo 'root: '. $xmlobj->getName() . '<br />';

// loops through the children of root
foreach($xmlobj->children() as $child) {
  echo $child->getName(). ': '. '<br />';          // print the name of the current child

  // if the child node has other children
  if($child->count()>1) {
    // loops through the child node, prints the name and the content of each $child2
    foreach($child as $child2) {
     echo $child2->getName(). ': '. $child2. '<br />';

      // if the child2 node has other children
      if($child2->count()>1) {
        // loops through the child2 node, prints the name and the content of each $child3
        foreach($child2 as $child3) {
         echo $child3->getName(). ': '. $child3. '<br />';

          // if the child3 node has other children
          if($child3->count()>1) {
            // loops through the child3 node, prints the name and the content of each $child4
            foreach($child3 as $child4) {
             echo $child4->getName(). ': '. $child4. '<br />';
            }
          }
        }
      }
    }
  }
}
?>

Thanks MarPlo I have done with your help but now I need the result in the following way.

Country1  89,921  61
A1        1187  45
AA1       375  45

How can I read that in this format.

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.