Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Запись в xml из модели.
Форум на CrossPlatform.RU > Библиотеки > Qt > Qt Обработка XML
rezor
Есть 2 вопроса.
Есть функция записи в xml почему идет добавление не в корень документа а полная перезапись??
// Запись в xml фаил
void MainWindow::addCategoryInXML()
{

QFile file("BDwww.xml");

if(file.open(QIODevice::ReadWrite))
{
    QDomDocument doc;
    doc.setContent(&file);
    QDomElement root=doc.documentElement();// получаем корень документа
    qDebug() << root.nodeName(); // элемент правильно извлекается
    QDomElement categoryNum=doc.createElement("category");//создаем потомка
    root.appendChild(categoryNum);
  
    QDomElement categoryName=doc.createElement("name_category");
    categoryNum.appendChild(categoryName);
    QDomText categoryNameText = doc.createTextNode(nameCategory->text());
    categoryName.appendChild(categoryNameText);

    QTextStream (&file)<<doc.toString();

    file.close();


}
else qDebug()<<"Error open file";

}

Получается
<?xml version="1.0"?>
<bdWWW>
</bdWWW>


<?xml version='1.0'?>
<bdWWW>
<category>
  <name_category>1111111111</name_category>
</category>
</bdWWW>


Должно быть
<?xml version="1.0"?>
<bdWWW>
<category>
  <name_category>1111111111</name_category>
</category>
</bdWWW>


2Вопрос.
Есть модель в виде treeView. В нее добавляются категории и не ограниченное количество ссылок. При добавлении категории все понятно добавил и сразу записал в xml , а как записать ссылку ведь надо найти нужную категорию среди имеющихся в файле, по каким параметрам искать???
В модели я использую сигнал doubleClicked(const QModelIndex &) и к выделенному объекту добавляю потомка.
Если искать в файле по именам тогда нельзя будет создавать категории и ссылки с одинаковыми именами и каким вообще способом получить имя выделенного объекта в модели или есть альтернативные параметры поиска???
LNA
1. Попробуй открыть файл ReadOnly
2. Наверное нужно как то сопоставить QModelIndex::internalPointer с элементами xml модели
Litkevich Yuriy
Цитата(rezor @ 4.8.2010, 21:00) *
а полная перезапись??
судя по приведённому результату, не перезапись, а дозапись в конец существующего
А причина вот:
Цитата(rezor @ 4.8.2010, 21:00) *
QTextStream (&file)<<doc.toString();


Цитата(rezor @ 4.8.2010, 21:00) *
2Вопрос.
совсем другой вопрос. Создавай новую тему.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2025 IPS, Inc.