PDA

Просмотр полной версии : грамотная организация XML-файла


Kinley
08.04.2008, 13:46
Флешка должна по ХМЛ файлу строить квадратики и стрелочки, соединяющие эти квадратики. Я решил попробовать следующую структуру ХМЛ-файла:

<?xml version="1.0" encoding="UTF-8"?>
<root>
<item id='1' name = 'item1' xx = '5' yy = '5'>
<rel> item2 </rel>
</item>
<item id='2' name = 'item2' xx = '50' yy = '50'>
</item>
<item id='3' name = 'item3' xx = '5' yy = '5'>
<rel> item2 </rel>
</item>
</root>

Но взглянув на сие написанное, никак не могу понять, а как реализовать все остальное? (функции построения квадратиков и стрелочек "drawSqr" и "drawLine" есть)...

Или, возможно, есть более изящный и аккуратный вид ХМЛ для этой задач? Подскажите пожалуйста... :rolleyes:

amesqit
08.04.2008, 19:13
что-то более изящное у вас вряли получится, т.к. вы с помощью xml-дерева описываете граф, с которым удобнее работать как с матрицей. Если вам после построения графа нужна информация о его вершинах и связях, то рекомендую построить матрицу, если же нет, то можно обойтись и двумя циклами обхода дерева, 1-й с целью получения и постоения всех вершин, 2-й для постоения связей.

Kinley
08.04.2008, 22:36
Эх, блин... Надо открывать вновь учебник по дискретке... :):):)

Но спасибо за совет!

crazyone
10.04.2008, 16:56
Вполне нормальный хмл-файл.
Сначала обходите все "item", строите квадратики, пихаете их в асоциативный массив под своими именами. Потом еще раз обходите дерево, строите стрелочки между нужными квадратиками.

iNils
10.04.2008, 17:00
Вполне нормальный хмл-файл.Не нормальный. amesqit предложил верный вариант.

crazyone
10.04.2008, 17:14
Не нормальный. amesqit предложил верный вариант.

Верный вариант - отказаться от хмл-файла в пользу матриц, когда в требованиях - строить по хмл-файлу?

iNils
10.04.2008, 17:44
Верный вариант - отказаться от хмл-файла в пользу матриц, когда в требованиях - строить по хмл-файлу?xml лишь носитель информации.

crazyone
10.04.2008, 17:51
xml лишь носитель информации.

Я ж и не спорю. И что бы ты в нем поменял, что в нем не нормального?

ЗЫ И я не против того, что amesqit прав, он даже говорит - если нужно только построить - два цикла, если потом с ним работать - строить матрицу.
Но сам файл менять - врятли имеет смысл, он нормальный.

iNils
10.04.2008, 18:12
Хе. Я его вчера читал и уже малость подзабыл, что он писал. Так что, я ошибся сославшись на него. В xml должно быть две раздельные ветки, в одной описываются объекты, в другой связи.

crazyone
10.04.2008, 18:28
ИМХО - как вариант. Только как вариант. В зависимости от конкретной задачи - может быть лучше вариант с одной двухуровневой веткой, или с двумя одноуровневыми.

amesqit
10.04.2008, 18:57
данынй вариант xml файла я бы изменил следующим образом, исходя из того, что написал Kinley, граф является направленным (если мне не изменяет памят это так называется), так вот, для описаний связей я бы не сатал использовать теги <rel></rel>, а просто перечислил бы их через какой-то разделитель, запятую или пробел, при том для иденификации использовал бы атрибут id, а не name, таким образом можно было бы несколько уменьшить размер файла, при большом количестве узлов. Если выносить связи в еще один узел, то выигрыша мы не получим никакого, по крайней мере я его абсолютно не вижу, т.к. нам придется придется описывать связи оного узла примерно так:

...
<item a='1' b='2'/>
<item a='1' b='3'/>
<item a='3' b='2'/>
...

а если это полносвязный граф с большим количеством узлов, то получится что мы необосновано раздуем файл до неоправданно больших размеров.
В общем как я и говорил, я бы предложил такую структуру xml:

<?xml version="1.0" encoding="UTF-8"?>
<root>
<item id='1' name = 'item1' xx = '5' yy = '5'>
2,3
</item>
<item id='2' name = 'item2' xx = '50' yy = '50'>
</item>
<item id='3' name = 'item3' xx = '5' yy = '5'>
2
</item>
</root>