xml error i php?
Hey alle...Har en parser til et xml dokument! Når jeg kører filen lokalt viser den det uden fejl, og skriver xml'en korrekt om til mit html!
Når jeg så smider det op på en Server får jeg fejlen:
XML error: mismatched tag at line 4
-------------------------------------
Koden:
<?php
echo "<table width=572 cellpadding=0 cellspacing=4 border=0><tr>";
echo "<td width=120><strong>Navne:</strong></td><td width=44><strong>Valuta</strong></td><td width=36><strong>Pr:</strong></td><td width=104><strong>FOREX køber rejsecheck</strong></td>";
echo "<td width=85><strong>FOREX køber sedler</strong></td><td width=86><strong>FOREX sælger sedler</strong></td>";
echo "<td width=105><strong>FOREX sælger rejsecheck</strong></td>
<td width=151><strong>Valutaguide 100DKK i udenlandsk valuta</strong></td>
<td></td></tr>";
$xmlFile = "http://www.forexvaluta.dk/ratesxml.asp?id=219";
class RSSParser
{
var $insideitem = false;
var $tag = "";
var $swift_code = "";
var $swift_name = "";
var $multiply = "";
var $buy_cash = "";
var $buy_tc = "";
var $sell_cash = "";
var $sell_tc = "";
var $CurrencyGuide = "";
var $base_swift = "";
function startElement($parser, $tagName, $attrs)
{
if ($this->insideitem)
{
$this->tag = $tagName;
}
elseif ($tagName == "ROW")
{
$this->insideitem = true;
}
}
function unhtmlspecialchars( $string )
{
$string = str_replace ( '&', '&', $string );
$string = str_replace ( ''', '\'', $string );
$string = str_replace ( '"', '\"', $string );
$string = str_replace ( '<', '<', $string );
$string = str_replace ( '>', '>', $string );
return $string;
}
function endElement($parser, $tagName)
{
if ($tagName == "ROW")
{
echo "
<tr><td width='120'>" . utf8_decode(trim($this->swift_name)) . "</td>";
echo "<td width='44'>" . trim($this->swift_code) . "</td>";
echo "<td width='36'>" . trim($this->multiply) . "</td>";
echo "<td width='104'>" . utf8_decode(trim($this->buy_cash)) . "</td>";
echo "<td width='85'>" . utf8_decode(trim($this->buy_tc)) . "</td>";
echo "<td width='86'>" . utf8_decode(trim($this->sell_cash)) . "</td>";
echo "<td width='105'>" . utf8_decode(trim($this->sell_tc)) . "</td>";
echo "<td width='151'>" . utf8_decode(trim($this->CurrencyGuide)) . "</td>
<td></td></tr>";
# echo "<td>" . trim($this->base_swift) . "</td></tr></table>";
# echo "<td>" . trim($this->insideitem) . "</td></tr></table>";
//Osv....
$this->swift_code = "";
$this->swift_name = "";
$this->multiply = "";
$this->buy_cash = "";
$this->buy_tc = "";
$this->sell_cash = "";
$this->sell_tc = "";
$this->CurrencyGuide = "";
$this->base_swift = "";
$this->insideitem = false;
}
}
function characterData($parser, $data)
{
if ($this->insideitem)
{
switch ($this->tag)
{
case "SWIFT_CODE":
$this->swift_code .= $data;
break;
case "SWIFT_NAME":
$this->swift_name .= $data;
break;
case "MULTIPLY":
$this->multiply .= $data;
break;
case "BUY_CASH":
$this->buy_cash .= $data;
break;
case "BUY_TC":
$this->buy_tc .= $data;
break;
case "SELL_CASH":
$this->sell_cash .= $data;
break;
case "SELL_TC":
$this->sell_tc .= $data;
break;
case "CURRENCYGUIDE":
$this->CurrencyGuide .= $data;
break;
case "BASE_SWIFT":
$this->base_swift .= $data;
break;
}
}
}
}
$xml_parser = xml_parser_create();
$rss_parser = new RSSParser();
xml_set_object($xml_parser,$rss_parser);
#ini_set('allow_call_time_pass_reference','1');
xml_set_element_handler($xml_parser, "startElement", "endElement");
xml_set_character_data_handler($xml_parser, "characterData");
$fp = fopen($xmlFile,"r") or die("Error reading XML data.");
while ($data = fread($fp, 4096))
{
xml_parse($xml_parser, $data, feof($fp))
or die(sprintf("XML error: %s at line %d",
xml_error_string(xml_get_error_code($xml_parser)),
xml_get_current_line_number($xml_parser)));
}
fclose($fp);
xml_parser_free($xml_parser);
echo "</table>";
?>
