2011-08-12 6 views
3

QDomElementがあります。をデバッグしたい、つまりデバッグコンソールでプレーンテキストと見なしてください。 qDebug()で出力するにはQString形式にする必要がありますが、QDomElementやQDomNodeの変換方法は表示されません。QtXmlでQDomElementをデバッグする方法は?

ありがとう!

答えて

9

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

QDebugの前方宣言のみを使用して宣言するために、QDebugが参照として使用されるように答えを編集しました。あなたの答えは完璧に私の質問に答えるので、私はあなたの答えを私の代わりに選ぶでしょう。ありがとう!! – moala

0

使用QTextStream:

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

あなたは#include <QDebug> QDebugは、テキストストリーム自体として作用する場合。 すなわちqDebug()<< lMyDomElement;

+0

実際には、私の設定(gcc4.2、Qt 4.6.3)ではなく、簡単に書き込むことができます。したがって、私の質問です。多分暗黙のキャストは発見されませんか?たぶん右(醜い)キャストを追加しますか? – moala

+0

よく...あなたの初期バージョンが良いです。 – Raiv

0

はまあ私も自分の最善の策は、このQDomElementはの一部であるQDomDocumentを利用することで、その場合には、似たような状況に遭遇して)十分だろう。だから私はあなたがQDomElementにアクセスする直接の方法を得ることができないが、QDomDocumentを使用してそれを達成することができると言うでしょう。

この場合、QDomDocumentが最新のQDomElementで更新されていることを確認してから、QDomDocument::toString()を使用すると、ドキュメント全体がQStringとして返されます。

ここにはQt referenceがあります。

これが役に立ちます。

+0

それは戦略ですが、より単純なものが推奨されるはずです、IMHO。とにかくありがとう。 – moala

関連する問題