Search code examples
javaxmljsoupmusicxml

Output JSoup without added spaces and line breaks around the elements


I am parsing and outputting an xml file using JSoup (and modifying the elements in between of course).

The output file has some extra spaces and line breaks. I was wondering if I can print this in the original format.

Original:

  <attributes>
        <divisions>4</divisions>
        <key>
          <fifths>0</fifths>
          <mode>major</mode>
          </key>
...

New:

<attributes> 
    <divisions>
     4
    </divisions> 
    <key> 
     <fifths>
      0
     </fifths> 
     <mode>
      major
     </mode> 
    </key> 
...

Any idea on how to remove the spaces/enters from the elements?

I currently read in and print the document like this:

doc = Jsoup.parse(is, "UTF-8", "", Parser.xmlParser());


BufferedWriter htmlWriter = new BufferedWriter(new OutputStreamWriter(new FileOutputStream("output.xml"), "UTF-8"));
        htmlWriter.write(doc.toString());

Solution

  • With some help from Aleksandr M I solved it in the following way:

    doc.outputSettings().indentAmount(0).prettyPrint(false);
    

    A little less nice, but this also seemed to do the trick:

    htmlWriter.write(doc.toString().replaceAll(">\\s+",">").replaceAll("\\s+<","<"));