Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets > [Qt] работа с файлами xml


Автор: Ivannet 10.3.2008, 20:33
Здравствуйте.
Возникла задача создать небольшой "редактор" для создания файлов xml(структура xml известна). Например, чтобы была возможность сформировать данный файл не самим теги прописывая:
Код

<shop id="12" >
<books>
<book id="1" name="first" >
<description>blablabla</description>
</book>
<book id="2" name="second" >
<description>blabla</description>
</book>
</books>
</shop>


а с помощью приложения. То есть, Данную структуру представляю в QTreeWiidget:
shop
|
|__books
|
|__book
| |__description
|
|__book
|__description

Когда выделяю нужный QTreeWidgetItem, например "book", то появляется форма с текстовыми полями, в которой вносим данные нужных атрибутов: id, name.
По добавлению данных более менее понятно, а вот если нужно подредактировать уже сформированный файл, то появляются сложности.
Например, возьмем представленный выше файл xml. Выделяю в созданном QTreeWidget второй item — "book" и в появившейся форме появляются данные id = 2 и name = second. Мне нужно изменить на форме любое из этих полей(либо id, либо name) и чтобы эти изменения были сохранены в исходном файле.
Подскажите пожалуйста как это можно сделать? (у меня сейчас так сделано, что атрибуты выделенного тега не изменяются, а добавляется в конец файла новый тег)

Автор: JackYF 10.3.2008, 23:24
Цитата(Ivannet @  10.3.2008,  19:33 Найти цитируемый пост)
Подскажите пожалуйста как это можно сделать?

Ну смотри средства QtXml в плане загрузки, изменения и экспорта получившегося xml.

Автор: archimed7592 11.3.2008, 08:24
Цитата(Ivannet @  10.3.2008,  20:33 Найти цитируемый пост)
Подскажите пожалуйста как это можно сделать?

Код

el.setAttribute(QLatin1String("name"), name);
// ...
doc.save(...);

Автор: Любитель 11.3.2008, 18:07
Есть хорошие три демки у ктешки по XML. Дерево отображают.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)