Autor Zpráva
Holden
Profil
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ť?
Toto téma je uzamčeno. Odpověď nelze zaslat.

0