Jump to content

Help with SimpleXML


john.muckley

Recommended Posts

Hey guys,

 

Hoping someone can help me out.

I have this XML output from a cloud management API which looks like this:

<listcapacityresponse cloud-stack-version="4.2.1"><count>6</count>
<capacity>
<type>8</type><zoneid>f26c2094-f2ca-4951-9265-a3f036e7f045</zoneid><zonename>DBXCP1</zonename><capacityused>6</capacityused><capacitytotal>18</capacitytotal><percentused>33.33</percentused>
</capacity>
<capacity>
<type>0</type><zoneid>f26c2094-f2ca-4951-9265-a3f036e7f045</zoneid><zonename>DBXCP1</zonename><capacityused>27246198784</capacityused><capacitytotal>97078222080</capacitytotal><percentused>28.07</percentused>
</capacity>
<capacity>
<type>1</type><zoneid>f26c2094-f2ca-4951-9265-a3f036e7f045</zoneid><zonename>DBXCP1</zonename><capacityused>13500</capacityused><capacitytotal>52800</capacitytotal><percentused>25.57</percentused>
</capacity>
<capacity>
<type>5</type><zoneid>f26c2094-f2ca-4951-9265-a3f036e7f045</zoneid><zonename>DBXCP1</zonename><capacityused>3</capacityused><capacitytotal>12</capacitytotal><percentused>25</percentused>
</capacity>
<capacity>
<type>6</type><zoneid>f26c2094-f2ca-4951-9265-a3f036e7f045</zoneid><zonename>DBXCP1</zonename><capacityused>14619246592</capacityused><capacitytotal>106308304896</capacitytotal><percentused>13.75</percentused>
</capacity>
<capacity>
<type>3</type><zoneid>f26c2094-f2ca-4951-9265-a3f036e7f045</zoneid><zonename>DBXCP1</zonename><capacityused>92190801920</capacityused><capacitytotal>1099511627776</capacitytotal><percentused>8.38</percentused>
</capacity>
</listcapacityresponse>

Each 'type' represents a different available resource, so like type 1 is available CPU, type 0 is available RAM. That sort of thing.

I need to be able to parse this so i can split up the individual resources and eventually display their data as a chart.

I can do the chart bit, but i need to split the data up first.

 

Any help is appriciated.

 

Thanks

 

Jonny

Link to comment
https://forums.phpfreaks.com/topic/285637-help-with-simplexml/
Share on other sites

this will put the data in an array

$xml = simplexml_load_string($str);

foreach ($xml->listcapacityresponse->capacity as $cap) {
    $results[] = (array)$cap;
}
echo '<pre>',print_r($results, true),'</pre>';

/* RESULTS ***********************************************************

Array
(
    [0] => Array
        (
            [type] => 8
            [zoneid] => f26c2094-f2ca-4951-9265-a3f036e7f045
            [zonename] => DBXCP1
            [capacityused] => 6
            [capacitytotal] => 18
            [percentused] => 33.33
        )

    [1] => Array
        (
            [type] => 0
            [zoneid] => f26c2094-f2ca-4951-9265-a3f036e7f045
            [zonename] => DBXCP1
            [capacityused] => 27246198784
            [capacitytotal] => 97078222080
            [percentused] => 28.07
        )

    [2] => Array
        (
            [type] => 1
            [zoneid] => f26c2094-f2ca-4951-9265-a3f036e7f045
            [zonename] => DBXCP1
            [capacityused] => 13500
            [capacitytotal] => 52800
            [percentused] => 25.57
        )

    [3] => Array
        (
            [type] => 5
            [zoneid] => f26c2094-f2ca-4951-9265-a3f036e7f045
            [zonename] => DBXCP1
            [capacityused] => 3
            [capacitytotal] => 12
            [percentused] => 25
        )

    [4] => Array
        (
            [type] => 6
            [zoneid] => f26c2094-f2ca-4951-9265-a3f036e7f045
            [zonename] => DBXCP1
            [capacityused] => 14619246592
            [capacitytotal] => 106308304896
            [percentused] => 13.75
        )

    [5] => Array
        (
            [type] => 3
            [zoneid] => f26c2094-f2ca-4951-9265-a3f036e7f045
            [zonename] => DBXCP1
            [capacityused] => 92190801920
            [capacitytotal] => 1099511627776
            [percentused] => 8.38
        )

)
*********************************************************************/

Link to comment
https://forums.phpfreaks.com/topic/285637-help-with-simplexml/#findComment-1466381
Share on other sites

Thanks barand!

 

I implemented this like so...

<?php

$types = simplexml_load_file("data.xml");
$xml = simplexml_load_string($types);

foreach ($xml->listcapacityresponse->capacity as $cap) {
    $results[] = (array)$cap;
}
echo '<pre>',print_r($results, true),'</pre>';


?>

...but it doesnt seem to be working.

 

I get no output at all, any idea where i'm going wrong?

 

Thanks! :)

Link to comment
https://forums.phpfreaks.com/topic/285637-help-with-simplexml/#findComment-1466387
Share on other sites

Either load from string or load from file - not both!

<?php

$types = simplexml_load_file("data.xml");

foreach ($types->listcapacityresponse->capacity as $cap) {
    $results[] = (array)$cap;
}
echo '<pre>',print_r($results, true),'</pre>';


?>

Link to comment
https://forums.phpfreaks.com/topic/285637-help-with-simplexml/#findComment-1466391
Share on other sites

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.