c++xmlqtxml-formatting

Format XML file in c++ or Qt


I have an XML file where outputs are not getting formatted. That means all the outputs are in a single line but I want to break it tag by tag.

For e.g. -

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

But i want to do it like this ::

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

Please don't suggest to do it while writing the XML file because this XML file is already there but now I have to format it as mentioned above.


Solution

  • void format(void)
    {
        QDomDocument input;
    
        QFile inFile("D:/input.xml");
        QFile outFile("D:/output.xml");
    
        inFile.open(inFile.Text | inFile.ReadOnly);
        outFile.open(outFile.Text | outFile.WriteOnly);
    
        input.setContent(&inFile);
    
        QDomDocument output(input);
        QTextStream stream(&outFile);
        output.save(stream, 2);
    }