86 lines
3.5 KiB
Markdown
86 lines
3.5 KiB
Markdown
# xmlshow: A super-simple and powerful viewer for large XML files, for the command-line
|
|
|
|
## Introduction
|
|
|
|
Ever found yourself with an XML file just too large for your editor or your browser, and did you (like me) spent your time trying to find a simple solution on the Web? This one may be for you.
|
|
|
|
And if it isn't, you may have found enough material to create your own, just with standard utilities.
|
|
|
|
### Features
|
|
xmlshow is a super-simple XML viewer for the Unix command line, which should provide most everything you could wish,
|
|
since uses the features of [less](https://ss64.com/bash/less.html).
|
|
|
|
- It will display any **large** XML file in a breeze.
|
|
- It has syntax highlighting
|
|
- If it is a zip file, it will unzip it in the process (zipping is *both* indispensable and effective,
|
|
since XML is wonderfully redundant).
|
|
- It has line numbering
|
|
- You can navigate forward and backward
|
|
- You can use sed search patterns.
|
|
|
|
### Limitations
|
|
There are two things, however, that it won't do:
|
|
- Modifying the file
|
|
- Prepare or serve coffee
|
|
|
|
### Usage
|
|
Just type:
|
|
|
|
$ xmlshow <filename>
|
|
|
|
<img src="Demo.gif" />
|
|
|
|
It will also read from stdin if no argument is provided. Hence if some utility outputs some well-form XML on stdout, you can pipe it into xml show:
|
|
|
|
$ some-utility | xmlshow
|
|
|
|
## How it works
|
|
It combines:
|
|
|
|
- unzip, to extract the file
|
|
- file to check the mime type of the input file
|
|
- [xmllint](http://xmlsoft.org/xmllint.html), for beautifying the XML.
|
|
- highlight to highlight the syntax
|
|
- [less](https://ss64.com/bash/less.html) to view the file and add the line numbers.
|
|
|
|
The script does it for you, but this is the substance:
|
|
|
|
xmllint --format <yourfile> | highlight --syntax=xml --out-format=xterm-256 | less -R -N
|
|
|
|
(the `-R` parameter in `less` is for raw (i.e. to preserve the escape codes for colors), and `-N` is for numbering)
|
|
|
|
That's all there is to it: it's just a typical shell hack with Unix pipes, sufficiently long to warrant a script file, and sufficiently useful to be put on github.
|
|
|
|
## How to install it
|
|
|
|
1. Download the .sh file an install it some directory in your path (type `echo $PATH`to find out).
|
|
2. Make it executable: `chmod +x xmlshow.sh`
|
|
2. In that same directory, create a soft link: `ln -s xmlshow.sh xmlshow`
|
|
3. If it fails, make sure that utilities mentioned above (typically xmllint and highlight) are installed on your system. If not use your favorite package manager
|
|
- On Debian, `apt get install`
|
|
- On MacOs, `brew install` is your friend (see [instructions to install brew](https://brew.sh/))
|
|
|
|
*Voilà*, you should be all set.
|
|
|
|
## Tips
|
|
|
|
### Navigating the file
|
|
The [less](https://ss64.com/bash/less.html) utility has actually quite a few tricks up its sleeves.
|
|
|
|
Beside the usual commands, remember that:
|
|
|
|
- `z`jumps one window forward
|
|
- `w`jumps one window backward
|
|
- **`h` calls a help, with plenty of good features you may not have suspected (use q to quit)**
|
|
- To search for a pattern just type `/pattern`
|
|
|
|
### Viewing more text
|
|
It is also worth remembering that it is often easy to display more text at once, either by getting a smaller font on your terminal pane (on MacOS: `CMD -`, `CMD 0` to get to normal), or by increasing the size of the window or pane!
|
|
|
|
### Consulting the XML content of a docx document
|
|
Since you can use xmlshow in a pipe, you can do something like this:
|
|
|
|
unzip -p myfile.docx word/document.xml | xmlshow
|
|
|
|
It tells unzip to decompress the document.xml file and to send it to stdout, ready to be piped into xmlshow.
|