【问题标题】:How to debug QDomElement in QtXml?如何在 QtXml 中调试 QDomElement?
【发布时间】:2011-08-12 10:23:33
【问题描述】:

我有一个 QDomElement,我想对其进行调试,即在调试控制台中将其视为纯文本。为了使用 qDebug() 输出它,它需要是 QString 格式,但是我没有看到来自 QDomElement 或 QDomNode 的任何转换方法。

有什么想法吗?谢谢!

【问题讨论】:

    标签: c++ debugging qt qtxml


    【解决方案1】:

    没有用于将 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;
    }
    

    【讨论】:

    • 刚刚编辑了您的答案,以便将 QDebug 用作参考,以便仅使用 QDebug 上的前向声明来声明。你的回答完美地解决了我的问题,所以我会选择你的答案而不是我的。谢谢!!
    【解决方案2】:

    使用 QTextStream:

    QTextStream lTS(stdout);
    lTS << lMyDomElement;
    

    【讨论】:

      【解决方案3】:

      如果你 #include &lt;QDebug&gt; QDebug 将充当 TextStream 本身。 即qDebug()&lt;&lt; lMyDomElement; 就足够了)

      【讨论】:

      • 实际上,不是我的配置(gcc4.2,Qt 4.6.3)。因此我的问题。也许没有发现隐式演员表?也许添加正确的(丑陋的)演员?
      • 嗯...那么你的初始版本会更好。
      【解决方案4】:

      好吧,我也遇到过类似的情况,在这种情况下,我最好的选择是使用QDomDocumentQDomElement 是其中的一部分。所以我想说您无法直接访问QDomElement,但您可以使用QDomDocument 来实现。

      为此,您需要确保您的 QDomDocument 使用最近的 QDomElement 进行更新,然后使用 QDomDocument::toString() 将整个文档作为 QString 返回给您。

      这里是Qt reference

      希望这会有所帮助。

      【讨论】:

      • 这是一种策略,但恕我直言,应该首选更简单的方法。还是谢谢。
      猜你喜欢
      • 2011-04-25
      • 2013-09-18
      • 1970-01-01
      • 2011-10-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多