Link to home
Start Free TrialLog in
Avatar of John_fresh
John_fresh

asked on

How to get a remote XML, extract the data and show them on my PHP page?

I need to extract data from this XML-feed: http://ads-cdn.unibet.com/orval/feed/PokerTournaments.xml
And make the extracted and formatted data appear on a PHP page, a page I will include either via PHP or as IFRAME into a wordpress page.
I have tried DOM and simple xml, but it will not work, I just get a blank page. The only thing I got to work is in the "code" below, but here it only shows 3 records, and I dont know why?? I want to determine the number of records shown.

I have also made a XSL-file for transformation. This file is pasted below the PHP code in the "code" field. Togetehr with a PHP file I hoped it would parse the XML-file, but all I got as a BLANK window. Can you see what is wrong with this?
<?php
 
// read xml file into string
$text = file_get_contents("http://ads-cdn.unibet.com/orval/feed/PokerTournaments.xml");
 
if(!$text) {
die("ERROR: Unable to read file");
}
 
// parse the xml into structure
$p = xml_parser_create();
xml_parser_set_option($p, XML_OPTION_CASE_FOLDING, 0);
xml_parse_into_struct($p, $text, $vals, $index);
xml_parser_free($p);
 
// read data of interest from structure into array:
for($i=0; $i<$index['Tournament'][1]; $i++)
{
foreach(array('Name', 'GameType', 'BuyInAmount', 'date', 'Status') as $key)
{
$data[$i][$key] = $vals[$index[$key][$i]]['value'];
}
}
 
// output HTML:
foreach($data as $val)
{
echo <<<XML
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head profile="http://gmpg.org/xfn/11">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
// I KNOW THE FORMATTING BELOW IS SICK, JUST WANTED TO TEST IF IT WORKED
<h3><a href="{$val['BuyInAmount']}" title="{$val['Name']}">{$val['Name']}</a></h3>
<p>{$val['date']}</p>
<a href="{$val['BuyInAmount']}" title="{$val['Name']}"><small>{$val['GameType']}</small></a>
XML;
}
?>
 
THE XSL:
 
<?xml version="1.0" encoding="utf-8"?><!-- DWXMLSource="PokerTournaments.xml" --><!DOCTYPE xsl:stylesheet  [
	<!ENTITY nbsp   "&#160;">
	<!ENTITY copy   "&#169;">
	<!ENTITY reg    "&#174;">
	<!ENTITY trade  "&#8482;">
	<!ENTITY mdash  "&#8212;">
	<!ENTITY ldquo  "&#8220;">
	<!ENTITY rdquo  "&#8221;"> 
	<!ENTITY pound  "&#163;">
	<!ENTITY yen    "&#165;">
	<!ENTITY euro   "&#8364;">
]>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" encoding="utf-8" doctype-public="-//W3C//DTD XHTML 1.0 Transitional//EN" doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"/>
<xsl:template match="/">
 
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title>Kommende pokerturneringer</title>
</head>
 
<body>
<table width="700" border="1" cellspacing="2" cellpadding="3">
  <tr>
    <td>Turneringsnavn</td>
    <td>Pokertype</td>
    <td>Innstegspris</td>
    <td>Registrerte spillere</td>
    <td>Status</td>
    <td>Startdato</td>
  </tr>
  <xsl:for-each select="Poker/Tournament">
    <tr>
      <td><xsl:value-of select="Name"/></td>
      <td><xsl:value-of select="GameType"/></td>
      <td><xsl:value-of select="BuyInAmount"/></td>
      <td><xsl:value-of select="RegisteredPlayers"/></td>
      <td><xsl:value-of select="Status"/></td>
      <td><xsl:value-of select="StartDate"/></td>
    </tr>
  </xsl:for-each>
 
 
</table>
 
 
</body>
</html>
 
</xsl:template>
</xsl:stylesheet>

Open in new window

ASKER CERTIFIED SOLUTION
Avatar of Tobias
Tobias
Flag of Switzerland image

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial