format xml, pretty print
Asked Answered
K

5

9

I know of two ways to "pretty print", or format, xml:

  1. shell tools
  2. Hack 38 Pretty-Print XML Using a Generic Identity Stylesheet and Xalan

what other free (as in beer) formatters are there? (aside from using javascript)

Kevon answered 9/11, 2010 at 0:25 Comment(1)
Just for completeness and better discoverability I link to pretty printing xml with javascript (which is probably the canonical SO thread regarding javascript solutions to this problem)Monson
L
15

Well, the identity transform you linked to is portable to any XSLT processor (Saxon, msxml, etc).

Additionally, you could look at xmllint which is part of the LibXML2 toolkit. The --format option allows you to pretty print the input. Similar functionality exists in XMLStarlet (which uses LibXML2 under the hood iirc).

Loiretcher answered 9/11, 2010 at 11:4 Comment(1)
Works great for strings too: echo "<xml here>" | xmllint --format -Stalk
M
12

xmlstarlet fo is what I use for pretty printing. Xmlstarlet has a number of options:

$ xmlstarlet fo --help
XMLStarlet Toolkit: Format XML document
Usage: xml fo [<options>] <xml-file>
where <options> are
  -n or --noindent            - do not indent
  -t or --indent-tab          - indent output with tabulation
  -s or --indent-spaces <num> - indent output with <num> spaces
  -o or --omit-decl           - omit xml declaration <?xml version="1.0"?>
  -R or --recover             - try to recover what is parsable
  -D or --dropdtd             - remove the DOCTYPE of the input docs
  -C or --nocdata             - replace cdata section with text nodes
  -N or --nsclean             - remove redundant namespace declarations
  -e or --encode <encoding>   - output in the given encoding (utf-8, unicode...)
  -H or --html                - input is HTML

A good XML engineer should be able to wield xmlstarlet.

Melissa answered 4/2, 2011 at 23:15 Comment(0)
B
3

You can use http://prettydiff.com/?m=beautify Unfortunately, it is written in JavaScript, but it is a complete application so you never have to know that. Just know that you can run from inside your browser without downloading or installing anything.

Balaklava answered 25/11, 2011 at 10:38 Comment(0)
C
1

I like the java library XOM for XML manipulation. It has a nice Pretty Printer that provides a lot of control over the output.

Chapland answered 9/11, 2010 at 1:38 Comment(0)
N
0

When using libxml2 in python:

with open(pathToSaveResult, 'w') as fd:
   xmlParsed.saveTo(fd,format = libxml2.XML_SAVE_FORMAT)

Edit: It looks like there is some bug in libxml2 ...pretty printing is done with the tag libxml2.XML_SAVE_NO_EMPTY instead of libxml2.XML_SAVE_FORMAT

Nordine answered 25/7, 2016 at 10:14 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.