Название: QDomDocument - непонятное поведение Отправлено: QCasper от Октябрь 08, 2007, 14:07 Кто может мне объяснить почему этот код:
Код: QDomDocument doc; печатает <body> <tag attr_1="p" attr_2="p" attr_3="p" attr_4="p" attr_5="p" attr_6="p" attr_7="p" attr_10="p" attr_8="p" attr_9="p" /> </body> вместо логичного <body> <tag attr_1="p" attr_2="p" attr_3="p" attr_4="p" attr_5="p" attr_6="p" attr_7="p" attr_8="p" attr_9="p" attr_10="p" /> </body> Название: Re: QDomDocument - непонятное поведение Отправлено: Dendy от Октябрь 08, 2007, 15:40 Аттрибуты хранятся в хеше и пишутся последовательно из каждой из веток хеш таблицы. Ключ хеша формируется из названия аттрибута путём суммирования ключей каждого символа. Несложно заметить, что ключ attr_3 будет ровно на единицу больше, чем attr_2. Но! Ключ для attr_10 уже имеет на один символ больше, а значит сумма ключей символов в итоге попадёт в произвольную ветку хеш таблицы, в данном случае - к attr_7. Собственно, данный разброс и демонстрирует эффективность алгоритма быстрого поиска по ключу (скорость в N раз больше по сравнению с прямым перебором, N - размер хеш таблицы). Выборка по аттрибутам рассчитана на поиск по ключу, а не по индексу. Последовательность аттрибутов отсутствует.
Название: Re: QDomDocument - непонятное поведение Отправлено: QCasper от Октябрь 08, 2007, 15:46 то есть нет никакой возможности записать атрибуты в нужном мне порядке?
Название: Re: QDomDocument - непонятное поведение Отправлено: AlekSi от Октябрь 08, 2007, 19:45 В XML нет такого понятия, как порядок атрибутов.
Код: for (int i=0; ++i<11;) Название: Re: QDomDocument - непонятное поведение Отправлено: QCasper от Октябрь 08, 2007, 20:12 В XML нет такого понятия, как порядок атрибутов. Я все понимаю, я и сам как бы не сторонник. Если бы не одна проблема. Вот попробуйте запихнуть файл проекта visual c++ (*.vcproj) в QDomDocument. А потом, ничего не меняя, сохранить этот QDomDocument назад в этот файл. И все блин, он уже не валидный проект, студия его не открывает. Я посмотрел, при открытии порядок атрибутов поменялся, соответственно то, что я сохранил отличается от того, что было, только порядком атрибутов. Код: for (int i=0; ++i<11;) Чем Вам мне понравилась конструкция? :) Название: Re: QDomDocument - непонятное поведение Отправлено: Вячеслав от Октябрь 08, 2007, 20:21 то есть нет никакой возможности записать атрибуты в нужном мне порядке? В дом не пихал , а развлекался на змейке(python'e) - и порядок менял и добавлял - жрет :( (2005)Название: Re: QDomDocument - непонятное поведение Отправлено: QCasper от Октябрь 08, 2007, 20:49 то есть нет никакой возможности записать атрибуты в нужном мне порядке? В дом не пихал , а развлекался на змейке(python'e) - и порядок менял и добавлял - жрет :( (2005)Со змейкой не знаком, мне бы на c++/qt :) Мне надо то собсно, считать xml'ку и заменить значения атрибутов некоторых тегов своими. Название: Re: QDomDocument - непонятное поведение Отправлено: Вячеслав от Октябрь 08, 2007, 21:22 А в qmake поковыряться ? Он-то нормальный проект создает ;)
Название: Re: QDomDocument - непонятное поведение Отправлено: QCasper от Октябрь 08, 2007, 21:27 А в qmake поковыряться ? Он-то нормальный проект создает ;) Эмм... а что именно поковырять? Название: Re: QDomDocument - непонятное поведение Отправлено: Вячеслав от Октябрь 08, 2007, 21:31 Если qmake запустить с ключиком -t vc то он создает правильный vcproj ... Соответственно курим генератор который отвечает за это шаблон ;) Ы ?
msvc_vcproj.cpp и msvc_vcproj.h Но ой - они руками xml рисуют :( Облом Название: Re: QDomDocument - непонятное поведение Отправлено: QCasper от Октябрь 08, 2007, 21:49 Если qmake запустить с ключиком -t vc то он создает правильный vcproj ... Соответственно курим генератор который отвечает за это шаблон ;) Ы ? msvc_vcproj.cpp и msvc_vcproj.h Но ой - они руками xml рисуют :( Облом Вот уж точно облом, придется ручной метод оставить |