From 2e1b3ec6642bed0146bb5df3f8b3905a7c9631c6 Mon Sep 17 00:00:00 2001 From: Robin Dunn Date: Thu, 26 Feb 2015 16:20:31 -0800 Subject: [PATCH] Add prettifyNode tool function --- etgtools/extractors.py | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/etgtools/extractors.py b/etgtools/extractors.py index 62533549..12e538d5 100644 --- a/etgtools/extractors.py +++ b/etgtools/extractors.py @@ -1541,6 +1541,7 @@ def flattenNode(node, rstrip=True): Extract just the text from a node and its children, tossing out any child node tags and attributes. """ + # TODO: can we just use ElementTree.tostring for this function? if node is None: return "" if sys.version_info < (3,): @@ -1561,6 +1562,18 @@ def flattenNode(node, rstrip=True): return text +def prettifyNode(elem): + """ + Return a pretty-printed XML string for the Element. Useful for debugging + or better understanding of xml trees. + """ + from xml.etree import ElementTree + from xml.dom import minidom + rough_string = ElementTree.tostring(elem, 'utf-8') + reparsed = minidom.parseString(rough_string) + return reparsed.toprettyxml(indent=" ") + + def appendText(node, text): """ Append some text to a docstring element, such as an item's briefDoc or @@ -1584,6 +1597,7 @@ def prependText(node, text): node.insert(0, ele) + def makeTextElement(text): element = et.Element('para') element.text = text