格式化c或Qt中的XML文件
发布时间:2020-12-16 03:45:02 所属栏目:百科 来源:网络整理
导读:我有一个xml文件,其中输出没有格式化.这意味着所有输出都在一行中,但我想逐个标记地打破它. 对于例如 – ?xml version="1.0" encoding="UTF-8" standalone="no" ?Analyser JointDetails DetailsStdThickness T /StdThicknessThickness_num 0.032 /Thickness_
我有一个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文件已经存在,但现在我必须按上面提到的格式化它. 提前致谢 . 解决方法
使用QXmlStreamReader和QXmlStreamWriter可以做你想要的. 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; (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |