Название: Qt 4.3.0. Как перезаписать в XML файле определенный тег Отправлено: 5serg от Июль 24, 2007, 15:16 Проблема вот в чём.
Имеется XML файл. Каким образом найти в нём определенный тег и перезаписать в нем атрибут? Использую DOM. Название: Qt 4.3.0. Как перезаписать в XML файле определенный тег Отправлено: SABROG от Июль 24, 2007, 16:00 Как это делается в libxml2 я могу сказать, а вот как в QtXml модуле я не знаю, мне кажется, что он слабоват.
Название: Qt 4.3.0. Как перезаписать в XML файле определенный тег Отправлено: 5serg от Июль 24, 2007, 16:16 Расскажите плиз по подробнее что за libxml2. Где его взять и желательно примерчик с ним
Название: Qt 4.3.0. Как перезаписать в XML файле определенный тег Отправлено: SABROG от Июль 24, 2007, 16:31 http://en.wikipedia.org/wiki/LibXML
http://xmlsoft.org/index.html Кросплатформенная библиотека для работы с xml файлами изначально написанная для оболочки Gnome. На данный момент имеет встроенный ftp, http клиент и полный набор для работы не только с XMLем, но и HTMLем, реализовано докучи популярных алгоритмов для работы с xml'eм: * the XML standard: http://www.w3.org/TR/REC-xml * Namespaces in XML: http://www.w3.org/TR/REC-xml-names/ * XML Base: http://www.w3.org/TR/xmlbase/ * RFC 2396 : Uniform Resource Identifiers http://www.ietf.org/rfc/rfc2396.txt * XML Path Language (XPath) 1.0: http://www.w3.org/TR/xpath * HTML4 parser: http://www.w3.org/TR/html401/ * XML Pointer Language (XPointer) Version 1.0: http://www.w3.org/TR/xptr * XML Inclusions (XInclude) Version 1.0: http://www.w3.org/TR/xinclude/ * ISO-8859-x encodings, as well as rfc2044 [UTF-8] and rfc2781 [UTF-16] Unicode encodings, and more if using iconv support * part of SGML Open Technical Resolution TR9401:1997 * XML Catalogs Working Draft 06 August 2001: http://www.oasis-open.org/committees/entity/spec-2001-08-06.html * Canonical XML Version 1.0: http://www.w3.org/TR/xml-c14n and the Exclusive XML Canonicalization CR draft http://www.w3.org/TR/xml-exc-c14n * Relax NG, ISO/IEC 19757-2:2003, http://www.oasis-open.org/committees/relax-ng/spec-20011203.html * W3C XML Schemas Part 2: Datatypes REC 02 May 2001 * W3C xml:id Working Draft 7 April 2004 Кстати прекрасно собирается через MinGW, разве что есть некоторые трудности с подключением zlib и iconv, но это решается. Правда есть и подводные камни, то что отпарсит MSXML - может не отпарсить libxml2, разработчик говорит - придерживается стандартов. В общем возможны проблемы также как и с firefox'ом, там где сайты открываются в IE, могут не открываться в firefox'e. Нарушение стандарта. Ну и по-умолчанию libxml2 работает с UTF-8, поэтому если собирать без iconv'a, то наши любимые xmlи с encoding="windows-1251" парсится не будут. Если же iconv есть, то xml отпарсится, но результат все-равно вернет в UTF-8 кодировке, т.ч. пугаться не надо. А перезапись свойства осуществляется так: - парсится файл - возвращается указатель на древовидную структуру xml дерева - проходим по дереву в поиске нужной нам ветки (ноды) - передаем в метод xmlSetProp(нашу_ноду,имя_свойства,значение_свойства); - сохраняем дерево в файл, если имя совпадает, то файл меняется, если нет, то создается новый. Название: Qt 4.3.0. Как перезаписать в XML файле определенный тег Отправлено: bigirbis от Июль 25, 2007, 09:13 Код: QDomDocument doc; Мануал стоит иногда почитывать Название: Qt 4.3.0. Как перезаписать в XML файле определенный тег Отправлено: 5serg от Июль 25, 2007, 09:34 Вы меня простите, я новичок в программировании, а что надо потом сделать после
doc.toString() ... как записать изменения обратно в файл? Название: Qt 4.3.0. Как перезаписать в XML файле определенный тег Отправлено: bigirbis от Июль 25, 2007, 10:13 Например так:
Код: QFile f( "myfile" ); добавлено спустя 2 минуты: Но вообще - читай мануал и посты форума. Ведь это форум, а не чат. Здесь левый треп ни к чему. |