【问题标题】:QXmlStreamWriter writes different start of the root element when not writing any text elementsQXmlStreamWriter 在不写入任何文本元素时写入根元素的不同开头
【发布时间】:2020-05-14 16:20:01
【问题描述】:

这是没有将任何文本元素写入 xml 文件的代码:

QString filename = QFileDialog::getSaveFileName(this, "Vytvorenie databázy", QDir::currentPath(), "XML file(*.xml)");
QFile file(filename);
file.open(QIODevice::WriteOnly);
QXmlStreamWriter xmlWriter(&file);
xmlWriter.setAutoFormatting(true);
xmlWriter.setAutoFormattingIndent(4);
xmlWriter.writeStartDocument();
xmlWriter.writeStartElement("CARS");
//
//
xmlWriter.writeEndElement();
xmlWriter.writeEndDocument();
file.close();

这是输出:

<?xml version="1.0" encoding="UTF-8"?>
<CARS/>

这是想要的输出:

<?xml version="1.0" encoding="UTF-8"?>
<CARS>
</CARS>

为什么不写任何附加元素时不写根元素的开始?即使没有添加更多元素,有没有办法明确告诉作者写它?同样的事情发生在 C# 中。

【问题讨论】:

  • 你为什么需要它?两者在语义上是等价的,每个解析器都应该解释相同。我认为你无法影响这一点。
  • 我在正确读取空 xml 文件时遇到了一些问题。然后我发现我做错了,正如你所说的,它们在语义上是等价的。

标签: qt xmlwriter qtxml


【解决方案1】:

它看起来像 QXmlStreamWriter 的内部实现,但这并不重要,因为两者在语义上是等效的,并且“每个解析器都应该解释相同”,正如评论者所写。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-09
    • 1970-01-01
    相关资源
    最近更新 更多