Take the 2-minute tour ×
Super User is a question and answer site for computer enthusiasts and power users. It's 100% free, no registration required.

How can I highlight XML from stdin (e.g. piped from xmllint --format) to stdout?

I know how to get highlighting working in nano and view, but is there something that just outputs to stdout and exits?

What I'd link to do is just type something like

xmllint --format xmlfile.xml | some-highlighter

or maybe, for big files

xmllint --format xmlfile.xml | some-highlighter | less

and get pretty output.

share|improve this question
add comment

3 Answers

up vote 3 down vote accepted

Supercat and grcat (grc) can do piped syntax highlighting. You'll probably have to make or find configuration files for XML. They are both available in the Ubuntu repositories as well as at the links provided.

Pygmentize has XML highlighting included. It's available as "python-pygments" in the Ubuntu repositories or by using easy_install Pygments.

xmllint --format xmlfile.xml | pygmentize -l xml | less
share|improve this answer
    
Pygmentize did the trick for me, although, at least on OS X, I had to give it the option -O encoding=UTF-8 to make it work on xmllint's output. Thanks! –  Sietse Sep 29 '10 at 12:38
    
If you're like me and annoyed by pygmentize complaining when you exit less without consuming all its output (Broken pipe), pipe through buffer (apt-get install buffer). E.g. xmllint --format foo.xml |pygmentize -g |buffer |less -r –  Marlies Jan 14 at 16:29
add comment

This is how you do it using GNU source-highlight and less:

source-highlight -i /tmp/foo.xml -f esc | less -r
share|improve this answer
    
From stdin, it's just source-highlight -s xml -f esc –  MikeFHay Apr 25 '13 at 16:08
    
Although actually, I'm finding esc256 produces prettier output than esc –  MikeFHay Apr 25 '13 at 16:26
add comment

I found highlight in Homebrew for OSX, and I'm sure it's available in the Ubuntu repository. It does highlighting and output to a number of formats, including terminal output.

share|improve this answer
1  
pbpaste|xmllint --format -|highlight --out-format=ansi --syntax=xml did the trick for me. (I could argue about highlight's color choices, though.) –  nbr Oct 3 '12 at 9:19
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.