|
|
|
| Тема не нова, но нужного ответа так и не нашел. Подскажите, пожалуйста, ресурс, где можно было бы найти пример скриптов xml-парсера на РНР? Т.е. на вход подается xml-документ, его нужно разобрать и вывести содержимое. Заранее спасибо. | |
|
|
|
|
|
|
|
для: Денис
(27.10.2006 в 15:20)
| | я точных адресов не знаю,но я читал статьи на сайтах: addzone.ru, http://library.mnwhost.ru
Вообщем заходим на яндекс и запрашиваем: "PHP парсер XML" :-) | |
|
|
|
|
|
|
|
|
|
для: cheops
(27.10.2006 в 22:45)
| | Замечательно, спасибо. Вариант идеальный, но при работе с базой данных.
Можно ли применить один из данных методов для построения иерархии деревьев при разборе xml-файла? Пример такой:
1.xml
<item>
<title>А</title>
</item>
<item>
<title>Б</title>
<item>
<title>В</title>
</item>
</item>
<item>
<title>Г</title>
</item>
|
необходимо построить дерево:
- А
- Б
---- В
- Г
------------------ | |
|
|
|
|
|
|
|
для: Денис
(30.10.2006 в 15:59)
| | Да, конечно, обычно если степерь вложенности заранее не известна, то прибегают к рекурсивному спуску по массиву. | |
|
|
|
|
|
|
|
для: cheops
(30.10.2006 в 16:10)
| | Вы могли бы хотя бы набросками подсказать, как можно разобрать эти xml-теги? я думал, что нужно составить правильное рег. выражение, но пока что-то не выходит... | |
|
|
|
|
|
|
|
для: Денис
(30.10.2006 в 16:19)
| | у вас все title на одном уровне (item). в XML уровни обозначаются тэгами, а не просто отступами. | |
|
|
|
|
|
|
|
для: elenaki
(30.10.2006 в 16:23)
| | Я просто хотел показать визуально, что есть некоторая вложенность. Эта вложенность заранее неизвестна.
Вот участок кода:
<item identifier="WELCOME" identifierref="res_welcome">
<title>Welcome</title>
</item>
|
Такая конструкция может повторяться несколько раз, меняются только данные между тегами <title>. | |
|
|
|
|
|
|
|
для: Денис
(30.10.2006 в 16:19)
| | Посмотри вот тут: http://ua2.php.net/manual/ru/function.xml-parse-into-struct.php | |
|
|
|
|
|
|
|
для: violet
(30.10.2006 в 17:09)
| | Еще один красивый пример:
<?
function print_array($ar) {
static $count;
$count = (isset($count)) ? ++$count : 0;
$colors = array('#FFCB72', '#FFB072', '#FFE972', '#F1FF72',
'#92FF69', '#6EF6DA', '#72D9FE');
if ($count > count($colors)) {
echo "Достигнута максимальная глубина погружения!";
$count--;
return;
}
if (!is_array($ar)) {
echo "Passed argument is not an array!<p>";
return; }
echo "<table border=1 cellpadding=0 cellspacing=0 bgcolor=$colors[$count]>";
while(list($k, $v) = each($ar)) {
echo "<tr><td>$k</td><td>$v</td></tr>\n";
if (is_array($v)) {
echo "<tr><td> </td><td>";
print_array($v);
echo "</td></tr>\n";
}
}
echo "</table>";
$count--;
}
$simple = file_get_contents("test.xml");
$p = xml_parser_create();
xml_parse_into_struct($p, $simple, $vals, $index);
xml_parser_free($p);
print_array($vals);
?>
|
| |
|
|
|
|
|
|
|
для: cheops
(30.10.2006 в 16:10)
| | Извините за настойчивость, но у меня еще один вопрос. Каким образом данные из xml-файла можно "загнать" в объект? Ведь с объектом потом можно будет проще работать, чем с массивом. Заранее спасибо. | |
|
|
|
|
|
|
|
для: Денис
(30.10.2006 в 19:26)
| | В таком случае советую воспользоваться расширением SimpleXML. | |
|
|
|