09-03-2011, 11:14 AM
Уважаемые форумчане.
Нужда заставила писать себе парсер XML на PHP.
Парсер должен, в итоге, разбирать скормленный ему XML по частям, подставлять в нужные части загруженые из MySQL данные и генерировать на выходе HTML страницу с этим измененным XML.
Нашел парсер, который просто разбирает и выводит 1 в 1 XML через HTML.
Я довольно плохо знаю PHP, т.е на уровне общих знаний по программированию(работа с переменными, логическими действиями, выражениями).
Имеется следующий проблемный код.
Нужда заставила писать себе парсер XML на PHP.
Парсер должен, в итоге, разбирать скормленный ему XML по частям, подставлять в нужные части загруженые из MySQL данные и генерировать на выходе HTML страницу с этим измененным XML.
Нашел парсер, который просто разбирает и выводит 1 в 1 XML через HTML.
Я довольно плохо знаю PHP, т.е на уровне общих знаний по программированию(работа с переменными, логическими действиями, выражениями).
Имеется следующий проблемный код.
PHP код:
<?php
function startElement($parser, $name, $attribs)
{
echo "<<font color=\"#0000cc\">$name</font>";
if (count($attribs)) {
$f = "12345-6;";
foreach ($attribs as $k => $v) {
if ($k == "id") {
$f = $v;
}
if ($v == "skill") {
echo " <font color=\"#009900\">$k</font>=\"<font
color=\"#ff0000\">$v</font>\"";
echo " <font color=\"#009900\">val</font>=\"";
echo "<font color=\"#ff0000\">$f</font>\"";
break;
}
else {
echo " <font color=\"#009900\">$k</font>=\"<font
color=\"#990000\">$v</font>\"";
}
}
}
echo ">";
}
который превращает строки:
Цитата:<set name='weight' val='150' />
<set name='material' val='wood' />
<set name='crystal_type' val='none' />
<set name='sellable' val='false' />
<set name='dropable' val='false' />
<set name='skill' val='21045-1;3267-1;23051-1;' />
в
Цитата:<set name='weight' val='150'>
<set name='material' val='wood'>
<set name='crystal_type' val='none'>
<set name='sellable' val='false'>
<set name='dropable' val='false'>
<set name='skill' val='12345-6;'>
Проблема в том, что код видит присвоение значения переменной только перед циклом, т.е
Код:
$f = "12345-6;";
Код:
if ($k == "id") {
$f = $v;
}
не видит. Подскажите, как мне можно при соблюдения условия, передать значение $f в строку
Цитата:echo "<font color=\"#ff0000\">$f</font>\"";
С уважением.