Russian Qt Forum
Ноябрь 22, 2024, 16:43 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Изменить значение в XML  (Прочитано 7270 раз)
a1ien
Гость
« : Июнь 08, 2011, 16:41 »

Есть XML допустим такой.
<settings>
 <someVal value="test"/>
 <Value>Test</value>
</settings>
Как изменить значение между Value.
как изменить в someVal атрибут я нашел.
там просто element.firstChildElement("someVal").setAttribute("value","test2");
а вот как изменить там текст. Пробовал так.
element.firstChildElement("Value").setNodeValue("Text2");
Но что но не заработало.
Записан
twp
Гость
« Ответ #1 : Июнь 09, 2011, 18:53 »

Test в данном случае это QDomText и соответственно нужно использовать его метод setData ( const QString & v )
Записан
a1ien
Гость
« Ответ #2 : Июнь 09, 2011, 20:32 »

Пробовал. Не работает.
зарабтало только вот так.
Код
C++ (Qt)
setText(const QDomElement &element, const QString &text)
{
       QDomElement oldElement=element;
        if (!element.isNull()) {
               QDomElement newTitleElement = domDocument.createElement(element.tagName());
 
               QDomText newTitleText = domDocument.createTextNode(text);
               newTitleElement.appendChild(newTitleText);
 
               oldElement.parentNode().replaceChild(newTitleElement, oldElement);
       }
}
 
Записан
twp
Гость
« Ответ #3 : Июнь 09, 2011, 21:39 »

а можно код, который не работает? перед тем как делать QDomNode::toText () выполнялось условие QDomNode::isText ()?
Записан
a1ien
Гость
« Ответ #4 : Июнь 09, 2011, 22:26 »

Я проверял через nodeType ().
Дак вот там был QDomNode::ElementNode.
Хотя я на 100% уверен что это именно тот элемент который нужн. Так-как вызов text () возвращает правильный текст.
Записан
twp
Гость
« Ответ #5 : Июнь 09, 2011, 22:48 »

а если попробовать взять у этого элемента чайлда через QDomNode QDomNode::firstChild () и проверить уже его тип?
Записан
a1ien
Гость
« Ответ #6 : Июнь 10, 2011, 16:05 »

а если попробовать взять у этого элемента чайлда через QDomNode QDomNode::firstChild () и проверить уже его тип?
Можно даже уже не проверять после firstChild () уже даже setData заработал.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.09 секунд. Запросов: 21.