Output JSoup without added spaces and line breaks

2020-04-02 09:00发布

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());

2条回答
干净又极端
2楼-- · 2020-04-02 09:20

Try this:

doc = Jsoup.parse(is, "UTF-8", "", Parser.xmlParser());
doc.outputSettings().escapeMode(Entities.EscapeMode.xhtml);
..
..

Hope this helps

查看更多
欢心
3楼-- · 2020-04-02 09:26

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+<","<"));
查看更多
登录 后发表回答