Как отлаживать QDomElement в QtXml? - PullRequest
3 голосов
/ 12 августа 2011

У меня есть QDomElement, и я хотел бы отладить его , то есть увидеть его в виде простого текста в консоли отладки. Чтобы вывести его с помощью qDebug (), он должен быть в формате QString, однако я не вижу ни метода преобразования ни из QDomElement, ни из QDomNode.

Есть идеи? Спасибо!

Ответы [ 4 ]

9 голосов
/ 13 августа 2011

Нет встроенного оператора для потоковой передачи элементов DOM в QDebug.Вы можете написать один достаточно легко, что-то вроде:

QDebug operator<<(QDebug dbg, const QDomNode& node)
{
  QString s;
  QTextStream str(&s, QIODevice::WriteOnly);
  node.save(str, 2);
  dbg << qPrintable(s);
  return dbg;
}
0 голосов
/ 12 августа 2011

если вы #include <QDebug> QDebug будет действовать как сам TextStream.то есть qDebug()<< lMyDomElement; будет достаточно)

0 голосов
/ 12 августа 2011

Ну, я также сталкиваюсь с подобными ситуациями, в этом случае лучше всего использовать QDomDocument, частью которого является QDomElement.Поэтому я бы сказал, что вы не можете получить прямой доступ к QDomElement, но вы можете добиться этого с помощью QDomDocument.

Для этого вам необходимо убедиться, что ваш QDomDocument обновлен с последним QDomElement, а затем использовать QDomDocument::toString(), который вернет вам весь документ в виде строки QString.

Вот ссылка на Qt .

Надеюсь, это поможет.

0 голосов
/ 12 августа 2011

Использовать QTextStream:

QTextStream lTS(stdout);
lTS << lMyDomElement;
...