Эта тема на forum.dklab.ru


WingedFox: Обход XML дерева
Здравствуйте,

При каждом запуске скрипта нужно обходить дерево и по определенным условиям выбирать из него данные.
Есть варианты:
1. DOM XML
2. XML parser
3. Преобразование дерева в многомерный массив и обход массива
4. Генерация скрипта, который будет представлять собой дерево и сам выбирать из себя данные

По трудоемкости все варианты примерно одинаковы...

Выскажитесь, пожалуйста, что будет работать эффективнее.
Может быть есть еще варианты?
Юрий Насретдинов:
WingedFox:
Если XML-данные, то некоторые базы поддерживают выборку из XML-данных (честно скажу, не знаю, какие), они будут работать явно быстрее :)
WingedFox:
yUAC:
Мускуль этого не умеет.
Кроме того - это файл конфигурации, который обрабатывается до установки соединения с базой. 8*)
Юрий Насретдинов:
WingedFox:
Понятно. А он большой / зачем хранить в таком формате ?
Евгений Галашин:
yUAC:
Бесплатных XML-БД АФАИК ещё не сделали...
WingedFox:

<?xml version="1.0" encoding="Windows-1251"?>
<!--
XML APEx sitemap
-->
<sitemap>
<domain>
<domain>
<domain match="ru|eng|de" type="optional" value="language">
<autorun file="/_Kernel/autorun.php" />
<template name="default.html" />
<block name="news" file="/_Blanks/news.html" />
<block name="menu" file="/_Blanks/menu.html" />
<block name="body" file="/index.html" />
<path match="ru|eng|de" type="optional" value="language" />
<path match="products">
<path match="vga" value="page">
<block name="body" file="/_Blanks/productlist.html" />
<path match=".*" value="card">
<block name="body" file="/_Blanks/product.html"/>
</path>
</path>
</path>
</domain>
</domain>
</domain>
</sitemap>


Дабы не разбирать урлы руками при написании скриптов.
Дмитрий Котеров:
Я вижу, Вы пошли по пути «весь сайт в одном флаконе». (-;
По крайней мере, вся карта — точно в одном.

Если данных, которые нужно выбрать, немного, лучше всего воспользоваться XPath-запросами к DOM — они все-таки на Си написаны. А если нужно все обойти, тогда, наверное, обычный DOM, вряд ли тут что придумать... Думаю, это в любом случае не будет узким местом, если только узлов не больше тысячи.
DmitriyPopov:
Если XML-данные, то некоторые базы поддерживают выборку из XML-данных (честно скажу, не знаю, какие)
Oracle и DB2 точно поддерживают.
Только, хочу заметить, что далеко не факт будет работать это быстрее при несложном дереве < несколько сот элементов
Юрий Насретдинов:
Дмитрий Попов:
C Oracle-то конечно ;)...

Эта тема на forum.dklab.ru