#1 · Zasláno:
23. 9. 2005, 08:29:14 · Upravil/a: Holden
Ahojte, mám problém s parsovaním XML a následným výpisom údajov na stránku.
parsovaný XML (zjednodušené):
<stmttrn>
<trnamt>500.00</trnamt>
</stmttrn>
<stmttrn>
<trnamt>350.00</trnamt>
<trnvasym>11180</trnvasym>
</stmttrn>
<stmttrn>
<trnamt>700.00</trnamt>
<trnvasym>11185</trnvasym>
</stmttrn>
parser:
<?
$subor = $xmlko;
$TRNAMT = Array();
$TRNVASYM = Array();
$lastOpened = '';
function startTag($parser, $name, $attribs) {
global $lastOpened;
$lastOpened = $name;
}
function endTag($parser, $name) {;
}
function characterData($parser, $data)
{
global $lastOpened,$TRNAMT,$TRNVASYM;
if (strlen(trim($data)))
{
switch ($lastOpened) {
case 'TRNAMT':
$TRNAMT[] = $data;
break;
case 'TRNVASYM':
$TRNVASYM[] = $data;
break;
default:
break;
}
}
}
$parser = xml_parser_create();
xml_parser_set_option($parser,XML_OPTION_CASE_FOLDING,false);
xml_set_element_handler($parser,'startTag', 'endTag');
xml_set_character_data_handler($parser,'characterData');
xml_parse($parser, file_get_contents($subor), true);
xml_parser_free($parser);
$zaznamov=count($TRNAMT);
$i = 0;
while ($i <= $zaznamov):
echo "<p>$TRNVASYM[$i]<br>
$TRNAMT[$i]
</p>";
$i++;
endwhile;
?>
No a k problému:
Pokiaľ chýba v tagu <stmttrn> informácia o <trnvasym> tak sa mi to vo výstupe všetko posunie a výstup je takýto:
11180
500
11185
350
700
a to je chybne, pretože je to posunuté práve o ten chýbajúci tag <trnvasym> na začiatku.
Chcel by som, aby to vyzeralo takto:
0
500
11180
350
11185
700
Neviete prosím vás, ako by som to mohol docieliť?