xmlpretty man page

xmlpretty — XML pretty printer


xmlpretty [--options] [filename]


xmlpretty is the commandline interface to XML::Handler::YAWriter, acting as a tool to add and remove pretty printing to XML files.

xmlpretty has several methods to add human readablitiy.

If you want to add readablity without adding so-called ignorable whitespace, use it in the following way :

$ xmlpretty --AddHiddenNewline \
            --AddHiddenAttrTab \
        --CatchEmptyElement \
        uglyfile.xml > prettyfile.xml

If you do not want to process the file further, but only want it human readable, add visible whitespace to the file as follows :

$ xmlpretty --PrettyWhiteNewline \
            --PrettyWhiteIndent \
        --CatchEmptyElement \
        uglyfile.xml > prettyfile.xml

You may use YAWriter to clean whitespace from XML documents. This may work in 99% of the cases where you want to get rid of ignorable whitespace caused by the various forms of pretty printing.

$ xmlpretty --NoWhiteSpace \
            --NoComments \
            --AddHiddenNewline \
        --AddHiddenAttrTab \
        --CatchEmptyElement \
        prettyfile.xml > cleanfile.xml


Options are given in a gnu like --option idiom.

AddHiddenNewline boolean
Add hidden newline before ">"
AddHiddenAttrTab boolean
Add hidden tabulation for attributes
CatchEmptyElement boolean
Catch empty Elements, apply "/>" compression
CatchWhiteSpace boolean
Catch whitespace with comments
IsSGML boolean
This option will cause start_document, processing_instruction and doctype_decl to appear as SGML. The SGML is still well-formed of course, if your SAX events are well-formed.
NoComments boolean
Supress Comments
NoDTD boolean
Supress DTD
NoPI boolean
Supress Processing Instructions
NoProlog boolean
Supress <?xml ... ?> Prolog
NoWhiteSpace boolean
Supress WhiteSpace to clean documents from prior pretty printing.
PrettyWhiteIndent boolean
Add visible indent before any eventstring
PrettyWhiteNewline boolean
Add visible newlines before any eventstring
SAX1 boolean (not yet implemented)
Output only SAX1 compilant eventstrings


Automatic recoding between 8bit and 16bit does not yet work correctly !

I have Perl-5.6 at home and here I can specify "use utf8;" in the right places to make recoding work. But I dislike saying "use 5.00555;" because many systems run 5.00503.


Michael Koehne, Kraehe@Copyleft.De


"Derksen, Eduard (Enno), CSCIO" <enno@att.com> helped me with the Escape hash and gave quite a lot of usefull comments.

See Also

perl and XML::Parser::PerlSAX