Как мне из базы данных "выдрать" переменные используя PHP+XML? Срочно!

  • Автор темы Бушидо
  • Дата начала

Бушидо

Guest
Как мне из базы данных "выдрать" переменные используя PHP+XML? Срочно!

Значит так есть база данных например Array(путь такой .../cgi-bin/Array.pl?Date1) В Date1 написана всего одна строчка
<Date var1="123" var2="456" var3="abc"/></Date>.
Из этой строки мне нужно выташить все переменные(var1, var2, var3) в файл index.php. Тоесть в index.php переменные var1, var2 и var3 должны соджержать данные из .../cgi-bin/Array.pl?Date1. Кроме Date1 могут быть и другие файлы. Число переменных не ограниченно но мне нужны только эти три. Как мне это написать используя PHP+XML? Срочно нужен пример кода.
 

Бушидо

Guest
Я написал с применением DOM, но у меня не работает:(
<?php
$vars = array();
$xml = join('',file('.../cgi-bin/Array.pl?Date1'));
$xml = xmldoc($xml);
$root = $xml->root();
$nodes = $root->children();
foreach($nodes as $node)
{
if ($node->name=='Date')
{
$currentvars = array();
$currentvars['var1'] = $node->get_attribute('var1')
$currentvars['var2'] = $node->get_attribute('var2')
$currentvars['var3'] = $node->get_attribute('var3');
$vars[] = $currentvars;
};
};
?>

-~{}~ 12.08.05 17:54:

SnowB
не работает...там вот эта строчка все портит:
$dom->loadXML('<Date var1="123" var2="456" var3="abc"/>');
Это не совсем то что мне нужно.
 

chameleon

Новичок
не работает...там вот эта строчка все портит:
$dom->loadXML('<Date var1="123" var2="456" var3="abc"/>');
Это не совсем то что мне нужно.
версию php ты не указал, и я написал как удобнее. Что мешает по аналогии с 5-ки на 4-ку переписать?
 

Бушидо

Guest
chameleon Версия ПХП 5.0.4. Я просто непонимаю строчку
$dom->loadXML('<Date var1="123" var2="456" var3="abc"/>');
Меня смушает: "('<Date var1="123" var2="456" var3="abc"/>')"
MiRacLe и как этим пользоватся?
Я вообшето чайник в ПХП=)
Напиишите пример кода плииз

-~{}~ 12.08.05 22:00:

<Date var1="3" var2="123" var3="5" var4="456" var5="343" var6="34" var7="abc"></Date>
Может быть и такой вариант. Тоесть мне нужны не все атрибуты переменных а какието определённые.
 

chameleon

Новичок
Версия ПХП 5.0.4.
твой код под 4-ку мой под 5-ку и работает. В чем проблемы?
Меня смушает: "('<Date var1="123" var2="456" var3="abc"/>')"
это строка из твоего примера, вместо нее подставь что хочешь, лишь бы это был правильно оформленный XML-документ.
Я вообшето чайник в ПХП=)
извини, но сдается, что и не в ПХП тоже ;)..
 

Бушидо

Guest
chameleon - так мне нужно открыть XML файл и из него выдрать инфу. Но он не совсем првильно оформлен. Как я писал там всего одна строчка. Причем файл находится вот по такому пути: .../cgi-bin/Array.pl?Date1
 

Бушидо

Guest
не работает пишет DOMDocument Object ( ) после print_r($dom); а если из офа пробовать пишет DOMDocument::load() [function.load]: Input is not proper UTF-8, indicate encoding ! =))) сам LMD =)
 

Бушидо

Guest
=))))

-~{}~ 13.08.05 02:56:

разобрался я с этой фигней...Вот релизация на парсле:
<php>
// функция, выполняемая при встрече начала любого тега
// (вывод имени тега, всех атрибутов со значениями, в читаемой форме)
function startElement1($parser, $name, $attrs) {
global $attrname_div;
foreach($attrs as $key => $attr) {
printf(" $attrname_div$key=<i>$attr</i><br>");

}

}

// функция, выполняемая при встрече конца любого тега (вывод </имя>)
function endElement1($parser, $name) {

}

//функция, выполняемая при входе в тег (вывод текстового содержимого)
function characterData1($parser, $data) {
printf($data);
}

/* ОБРАБОТКА *********************************************************/

// сам обработчик xml
$xml_parser = xml_parser_create();

// использовать выравнивание регистра
xml_parser_set_option($xml_parser, XML_OPTION_CASE_FOLDING, true);

// установить функции, выполняемые при встрече начала/конца тега
xml_set_element_handler($xml_parser, "startElement1", "endElement1");

// установить функции, выполняемые при входе в тег
//xml_set_character_data_handler($xml_parser, "characterData1");

// при ошибке открытия файла
if (!($fp = fopen($file, "r"))) {
die("could not open XML input");
}

// читаем из файла, производим обработку xml_parse
while ($data = fread($fp, 4096)) {
if (!xml_parse($xml_parser, $data, feof($fp))) {
die(sprintf("XML error: %s at line %d",
xml_error_string(xml_get_error_code($xml_parser)),
xml_get_current_line_number($xml_parser)));
}
}

printf("</pre>".
"</td></tr></table>");

fclose($fp);

// освобождаем обработчик
xml_parser_free($xml_parser);

printf("<p />");

?>
</php>

Тока есть вопрос что такое <php>xml_set_element_handler($xml_parser, "startElement1", "endElement1");</php> Что нужно сделать чтоб она выдавала только три нужные мне атрибута

-~{}~ 13.08.05 03:03:

Точнее что нужно изменить в этой функции чтобы у нас было все го три результата? Или же как запихнуть нужные атрибуты в глобальные переменные (var1,var2,var3).
Результат работы такой:
d=LLL
ONLINE=0
EL=1
R=4
X=4
var1=6
W=8
var2=1
P=20
Y=0
P2=20
var=13
REGDAY=12.08.2005
NE=,,,,,
S1=
S2=

Думаю вопрос ясен всем=)))

-~{}~ 13.08.05 03:06:

ПыСЫ в переменной $file находится адрес ХML файла
 
Сверху