Qt中不一致的XML表示法 < >我使用QT和C++来读取/写入XML文件。虽然我只使用Qt类,但有一种奇怪的行为 QDomDocument document; QDomElement element = document.createElement( "QString" ); QDomText textNode = document.createTextNode( "" ); // Empty string. element.appendChild( textNode );

Qt中不一致的XML表示法 < >我使用QT和C++来读取/写入XML文件。虽然我只使用Qt类,但有一种奇怪的行为 QDomDocument document; QDomElement element = document.createElement( "QString" ); QDomText textNode = document.createTextNode( "" ); // Empty string. element.appendChild( textNode );,c++,xml,qt,C++,Xml,Qt,有时XML文件中的结果是,有时是。有人知道为什么会发生这种情况吗?由于您没有提供 #include <QDebug> #include <QDomDocument> #include <QDomElement> #include <QDomText> int main() { QDomDocument document; for (int i = 0; i < 15; ++i) { QDomElement

有时XML文件中的结果是
,有时是
。有人知道为什么会发生这种情况吗?

由于您没有提供

#include <QDebug>
#include <QDomDocument>
#include <QDomElement>
#include <QDomText>

int main()
{
    QDomDocument document;
    for (int i = 0;  i < 15;  ++i) {
        QDomElement element = document.createElement("QString");
        element.setAttribute("n", i);
        if (i%2)
            element.appendChild(document.createTextNode(QString()));
        document.appendChild(element);
    }

    qDebug() << qPrintable(document.toString());
}
#包括
#包括
#包括
#包括
int main()
{
QDOM文件;
对于(int i=0;i<15;++i){
QdomeElement元素=document.createElement(“QString”);
元素setAttribute(“n”,i);
如果(i%2)
元素.appendChild(document.createTextNode(QString());
文档.子元素(元素);
}

qDebug()在XML中这两个字符串都是等效的。这应该不会让您太烦恼:)好的,我知道。但有时我需要比较
XML
s的前后版本,以及这些(不是真实的)差异会让事情变得更难。@YeldarKurmangaliyev:是的,但应该选择一种或另一种形式。通常软件不会随意决定这些事情。这可能是
QDomDocument
被弃用的原因之一吗?(Per)–我知道,你现在被这段代码困住了。在QT源代码中找不到答案吗?@Jongware我非常同意:)我并不是说这不是一个合理的问题。对于相同的输入,任何给出不同输出的东西都会引起兴趣,至少是这样。
<QString n="0"/>
<QString n="1"></QString>
<QString n="2"/>
<QString n="3"></QString>
<QString n="4"/>
<QString n="5"></QString>
<QString n="6"/>
<QString n="7"></QString>
<QString n="8"/>
<QString n="9"></QString>
<QString n="10"/>
<QString n="11"></QString>
<QString n="12"/>
<QString n="13"></QString>
<QString n="14"/>