gpt4 book ai didi

c++ - 在 C++ 或 Qt 中格式化 XML 文件

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:14:33 32 4
gpt4 key购买 nike

我有一个输出没有格式化的 XML 文件。这意味着所有输出都在一行中,但我想一个标签一个标签地打断它。

例如-

<?xml version="1.0" encoding="UTF-8" standalone="no" ?><Analyser>   <JointDetails>              <Details><StdThickness> T </StdThickness><Thickness_num> 0.032 </Thickness_num></Details>   </JointDetails></Analyser>

但我想这样做::

<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
<Analyser>
<JointDetails>
<Details>
<StdThickness> T </StdThickness>
<Thickness_num> 0.032 </Thickness_num>
</Details>
</JointDetails>
</Analyser>

请不要建议在编写 XML 文件时执行此操作,因为此 XML 文件已经存在,但现在我必须按照上述格式对其进行格式化。

最佳答案

使用 QXmlStreamReaderQXmlStreamWriter 应该可以满足您的需求。 QXmlStreamWriter::setAutoFormatting(true) 将在不同的行上格式化 XML 并使用正确的缩进。使用 QXmlStreamReader::isWhitespace(),您可以过滤掉标签之间多余的空格。

QString xmlIn = "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\" ?>"
"<Analyser><JointDetails> <Details><StdThickness>"
" T </StdThickness><Thickness_num> 0.032 </Thickness_num>"
"</Details> </JointDetails></Analyser>";
QString xmlOut;

QXmlStreamReader reader(xmlIn);
QXmlStreamWriter writer(&xmlOut);
writer.setAutoFormatting(true);

while (!reader.atEnd()) {
reader.readNext();
if (!reader.isWhitespace()) {
writer.writeCurrentToken(reader);
}
}

qDebug() << xmlOut;

关于c++ - 在 C++ 或 Qt 中格式化 XML 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13946734/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com