in Web and Tech

Creating an XML and JSON formatting tool for Gedit

Working with unindented XML and JSON data can be a real PITA. Searching the net for a handy plugin for my text editor, I came across this pretty neat article.

Source: http://www.connorgarvey.com/blog/?p=264

Here’s how to add commands to Gedit to format JSON and XML documents.

  1. Ensure that you have an up-to-date version of Python. It’s included with nearly every Linux distribution.
  2. Ensure that the External Tools plugin is installed
  3. Click Edit -> Preferences
  4. Select the Plugins tab
  5. Check the box next to External Tools
  6. Click Close
  1. Add the Format JSON command
  2. Click Tools -> Manage External Tools…
  3. Click New (bottom left, looks like a piece of paper with a plus sign)
  4. Enter a name (Format JSON)
  5. Paste this text into the text window on the right

    #! /usr/bin/env python
    import json
    import sysj = json.load(sys.stdin)
    print json.dumps(j, sort_keys=True, indent=2)
  6. Set Input to Current document
  7. Set Output to Replace current document
  1. Add the Format XML command
  2. Install lxml (on Ubuntu, sudo apt-get install python-lxml)
  3. Python’s included XML modules either don’t support pretty printing or are buggy
  4. Create a new external tool configuration as above (Format XML)
  5. Paste this text into the text window on the right

    #! /usr/bin/env python
    import sys
    import lxml.etree as etree
    import tracebackresult = ''
    for line in sys.stdin:
    result += line
    try:
    x = etree.fromstring(result)
    result = etree.tostring(x, pretty_print=True, xml_declaration=True, encoding=”UTF-8″)
    except:
    etype, evalue, etraceback = sys.exc_info()
    traceback.print_exception(etype, evalue, etraceback, file=sys.stderr)
    print result
  6. Set Input to Current document
  7. Set Output to Replace current document

Write a Comment

Comment