格式化c或Qt中的XML文件

前端之家收集整理的这篇文章主要介绍了格式化c或Qt中的XML文件前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个xml文件,其中输出没有格式化.这意味着所有输出都在一行中,但我想逐个标记地打破它.

对于例如 –

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

但我想这样做::

  1. <?xml version="1.0" encoding="UTF-8" standalone="no" ?>
  2. <Analyser>
  3. <JointDetails>
  4. <Details>
  5. <StdThickness> T </StdThickness>
  6. <Thickness_num> 0.032 </Thickness_num>
  7. </Details>
  8. </JointDetails>
  9. </Analyser>

请不要建议在写入XML文件时这样做,因为这个xml文件已经存在,但现在我必须按上面提到的格式化它.

提前致谢 .

解决方法

使用QXmlStreamReader和QXmlStreamWriter可以做你想要的. QXmlStreamWriter :: setAutoFormatting(true)将在不同的行上格式化XML并使用正确的缩进.使用QXmlStreamReader :: isWhitespace(),您可以过滤掉标记之间多余的空格.
  1. QString xmlIn = "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\" ?>"
  2. "<Analyser><JointDetails> <Details><StdThickness>"
  3. " T </StdThickness><Thickness_num> 0.032 </Thickness_num>"
  4. "</Details> </JointDetails></Analyser>";
  5. QString xmlOut;
  6.  
  7. QXmlStreamReader reader(xmlIn);
  8. QXmlStreamWriter writer(&xmlOut);
  9. writer.setAutoFormatting(true);
  10.  
  11. while (!reader.atEnd()) {
  12. reader.readNext();
  13. if (!reader.isWhitespace()) {
  14. writer.writeCurrentToken(reader);
  15. }
  16. }
  17.  
  18. qDebug() << xmlOut;

猜你在找的C&C++相关文章