예제 #1
0
 def __init__(self, handle, encoding):
     self.writer = XmlWriter(handle, encoding=encoding)
     self.indent = 0
예제 #2
0
파일: util.py 프로젝트: djibi2/pdk
 def __init__(self, handle, encoding):
     self.writer = XmlWriter(handle, encoding = encoding)
     self.indent = 0
예제 #3
0
class PrettyWriter(object):
    '''Handle low-level details of writing pretty indented xml.'''
    def __init__(self, handle, encoding):
        self.writer = XmlWriter(handle, encoding=encoding)
        self.indent = 0

    def start_document(self):
        '''Start the document.'''
        self.writer.startDocument()

    def end_document(self):
        '''End the document.'''
        self.writer.endDocument()

    def start_element(self, name, attributes):
        '''Start an element with children.'''
        self.tab()
        self.writer.startElement(name, attributes)
        self.newline()
        self.indent += 2

    def end_element(self, name):
        '''End an element with children.'''
        self.indent -= 2
        self.tab()
        self.writer.endElement(name)
        self.newline()

    def text_element(self, name, attributes, text):
        '''Start and end an element with no element children.'''
        self.tab()
        self.writer.startElement(name, attributes)
        for evil_char in '<&>':
            if evil_char in text:
                # we wish this wasn't buggy. We have to work around.
                #self.writer.handle_cdata(text)
                self.writer._check_pending_content()
                self.writer._write('<![CDATA[%s]]>' % text)
                break
        else:
            self.writer.characters(text, 0, len(text))
        self.writer.endElement(name)
        self.newline()

    def pi(self, target, text):
        '''Handle inserting a processing instruction.'''
        self.tab()
        self.writer.processingInstruction(target, text)
        self.newline()

    def comment(self, text):
        '''Insert a comment.'''
        self.tab()
        # work around the python xml writer weirdness
        save_packing = self.writer._packing
        self.writer._packing = 0
        self.writer.comment(text, 0, len(text))
        self.writer._packing = save_packing
        # self.newline()

    def tab(self):
        '''Insert whitespace characters representing an indentation.'''
        self.writer.characters(self.indent * ' ', 0, self.indent)

    def newline(self):
        '''Insert a \\n to end a line.'''
        self.writer.characters('\n', 0, 1)
예제 #4
0
파일: util.py 프로젝트: djibi2/pdk
class PrettyWriter(object):
    '''Handle low-level details of writing pretty indented xml.'''
    def __init__(self, handle, encoding):
        self.writer = XmlWriter(handle, encoding = encoding)
        self.indent = 0

    def start_document(self):
        '''Start the document.'''
        self.writer.startDocument()

    def end_document(self):
        '''End the document.'''
        self.writer.endDocument()

    def start_element(self, name, attributes):
        '''Start an element with children.'''
        self.tab()
        self.writer.startElement(name, attributes)
        self.newline()
        self.indent += 2

    def end_element(self, name):
        '''End an element with children.'''
        self.indent -= 2
        self.tab()
        self.writer.endElement(name)
        self.newline()

    def text_element(self, name, attributes, text):
        '''Start and end an element with no element children.'''
        self.tab()
        self.writer.startElement(name, attributes)
        for evil_char in '<&>':
            if evil_char in text:
                # we wish this wasn't buggy. We have to work around.
                #self.writer.handle_cdata(text)
                self.writer._check_pending_content()
                self.writer._write('<![CDATA[%s]]>' % text)
                break
        else:
            self.writer.characters(text, 0, len(text))
        self.writer.endElement(name)
        self.newline()

    def pi(self, target, text):
        '''Handle inserting a processing instruction.'''
        self.tab()
        self.writer.processingInstruction(target, text)
        self.newline()

    def comment(self, text):
        '''Insert a comment.'''
        self.tab()
        # work around the python xml writer weirdness
        save_packing = self.writer._packing
        self.writer._packing = 0
        self.writer.comment(text, 0, len(text))
        self.writer._packing = save_packing
        # self.newline()

    def tab(self):
        '''Insert whitespace characters representing an indentation.'''
        self.writer.characters(self.indent * ' ', 0, self.indent)

    def newline(self):
        '''Insert a \\n to end a line.'''
        self.writer.characters('\n', 0, 1)