Search code examples
google-analyticssimplexmlgoogle-analytics-apixmldom

cannot access xml entries of google analytics response xml using simplexml or xmldom


I am accessing the google analytics data using curl.

Its response text contains some thing like the following.

<entry gd:etag='W/&quot;A0EEQX47eSp7I2A9WhZSFU8.&quot;' gd:kind='analytics#datarow'>
        <id>http://www.google.com/analytics/feeds/data?ids=ga:176&amp;ga:pagePath=/indian-language-unicode-converter/punjabi-unicode-converter.html&amp;start-date=2011-03-01&amp;end-date=2011-03-31</id>
        <updated>2011-03-30T17:00:00.001-07:00</updated>
        <title>ga:pagePath=/indian-language-unicode-converter/punjabi-unicode-converter.html</title>

        <link rel='alternate' type='text/html' href='http://www.google.com/analytics'/>
        <dxp:dimension name='ga:pagePath' value='/indian-language-unicode-converter/punjabi-unicode-converter.html'/>
        <dxp:metric confidenceInterval='0.0' name='ga:pageviews' type='integer' value='1131'/>
    </entry>
    <entry gd:etag='W/&quot;A0EEQX47eSp7I2A9WhZSFU8.&quot;' gd:kind='analytics#datarow'>
        <id>http://www.google.com/analytics/feeds/data?ids=ga:76&amp;ga:pagePath=/indian-language-unicode-converter/hindi-unicode-converter.html&amp;start-date=2011-03-01&amp;end-date=2011-03-31</id>
        <updated>2011-03-30T17:00:00.001-07:00</updated>

        <title>ga:pagePath=/indian-language-unicode-converter/hindi-unicode-converter.html</title>
        <link rel='alternate' type='text/html' href='http://www.google.com/analytics'/>
        <dxp:dimension name='ga:pagePath' value='/indian-language-unicode-converter/hindi-unicode-converter.html'/>
        <dxp:metric confidenceInterval='0.0' name='ga:pageviews' type='integer' value='974'/>
    </entry>

in the above i want to access the <dxp:dimension and <dxp:metric

I tried using simplexml and phpdomxml using getglementsbytagname but still i couldnt reach that node.

if somebody could help me with that then that would be nice.. just the logic..

and besides what is this notation in xml dxp:dimension ?


Solution

  • dxp: is a namespace. More explanation can be found here: dxp namespace in the results xml feed

    If you are using PHP, you could try a function similar to this:

    function parse_data($xml){
    $doc = new DOMDocument();
    $doc->loadXML($xml);
    
    $entries = $doc->getElementsByTagName('entry');
    $i = 0;
    $results = array();
    foreach($entries as $entry)
    {
        $countries[$i] = array();
    
        $dimensions = $entry->getElementsByTagName('dimension');
        foreach($dimensions as $dimension)
        {
            $results[$i][ltrim($dimension->getAttribute("name"),"ga:")] =  $dimension->getAttribute('value');
        }
    
        $metrics = $entry->getElementsByTagName('metric');
        foreach($metrics as $metric)
        {
            $results[$i][ltrim($metric->getAttribute('name'),"ga:")] =  $metric->getAttribute('value');
        }
    
        $i++;
    }
    return $results;
    }
    

    And the following post by Alex Curelea is very helpful: Using the Google Analytics API - getting total number of page views