Название: Text элемента родителя содержит в себе текст всей дочерней ветки... Отправлено: BeSeech от Апрель 27, 2009, 22:43 Доброго времени суток.
с Qt я еще не дружу а только знакомлюсь. Так что натыкаюсь на вроди как банальные вещи. В основном проблему решить удается самостоятельно полистав форумы/книги. А тут не выходит. Помогите люди добрые, мы сами не местные (с) Суть вот в чем. Задача прочитать из файла XML данные с неограниченным уровнем вложений и записать это все в QStandardItemModel после чего отобразить это хозяйство в виде QTreeView. Перебирать все узлы QDomDocument с горем пополам удается. Дальше надо получить текст элемента и занести его в модель. Проблема в том, что, к примеру: Элемент "ааа" Подэлемент "ббб" Так вот. Текст элемента оно мне возвращает как "аааббб".... Ниже структура тестового XML и две функции в которых реализовано чтение. Рекурсивная часть Код: void MMenu::oneWay2(QStandardItem* pParent, QDomNode* pParentNode) Начало заполнения модели Код: void MMenu::xmlToModel(QStandardItemModel* pModel, QString appPath) Сам XML Код: <!DOCTYPE bePhoneBook> В итоге первый элемент выходит с текстом "a11111112112112121" вместо "а". Что я делаю не так? Спасбио за помощь :) Название: Re: Text элемента родителя содержит в себе текст всей дочерней ветки... Отправлено: mugabe от Апрель 29, 2009, 16:11 Это вовсе не проблема Qt. В любом языке и любой реализации DOM .text возвращает (по крайней мере должен) именно это.
Что бы получить текст исключительно необходимого Node нужно обойти все его child'ы, проверить какие из них являются текстом (должно быть что-то вроде .isText()) и уже у этих элементов получать значение. Название: Re: Text элемента родителя содержит в себе текст всей дочерней ветки... Отправлено: lit-uriy от Апрель 29, 2009, 17:46 BeSeech, в Асисстенте чётко написано, что функция text() рекурсивная. (см. описание QDomElement (http://doc.crossplatform.ru/qt/4.4.3/qdomelement.html))
Название: Re: Text элемента родителя содержит в себе текст всей дочерней ветки... Отправлено: BeSeech от Апрель 30, 2009, 18:09 Спасибо. Понял свою ошибку.
Уже подправил - работает. :) p.s. Простите за этот глупый вопрос, но я так полагаю, их еще будет у меня. :-[ |