Page 1 of 1

How to load xml's data by simplexml?

Posted: Wed Sep 12, 2012 6:28 am
by GiaTuan
I need to get col from xml:

Code: Select all

<titles>
     <row>
          <col>0</col><col>4</col>
     </row>
     <row>
          <col>1</col><col>41</col>
     </row>
     <row>
          <col>2</col><col>42</col>
     </row>
</titles>
result:

Code: Select all

row 0:
col 0:0 col1:4
row 1:
col 0:1 col1:41
row 2:
col 0:2 col1:42
I tried:

Code: Select all

$file="info.xml";
$xml = simplexml_load_file($file);
$count=count($xml->row);
foreach($xml->children() as $child) {
	$data="$child->col";
	echo "col=$data<br/>";
}
col=0
col=1
col=2
I just get first col

Re: How to load xml's data by simplexml?

Posted: Wed Sep 12, 2012 7:34 am
by social_experiment
Try the snippet below

Code: Select all

<?php
foreach($xml->children() as $child) {
        $data= $child['col'];
        echo "col=$data<br/>";
}
?>

Re: How to load xml's data by simplexml?

Posted: Wed Sep 12, 2012 7:48 am
by pbs
Also try this

Code: Select all

$count= count($xml->row);
for($i=0;$i<$count;$i++)
{
	$row = $xml->row[$i];
	echo $row->col[0]."==".$row->col[1]."<br>";
}

Re: How to load xml's data by simplexml?

Posted: Wed Sep 12, 2012 2:29 pm
by requinix
What pbs is getting at is that if you just look at $child->col you'll only get the first element. You have to treat it like an array (eg, use an offset or a loop) if you want to get all the elements.