def parse_xml(self, readsize=16384):
        if not self.path:
            return

        elements = []

        builder = SnippetsTreeBuilder( \
                        lambda node: elements.append((node, True)), \
                        lambda node: elements.append((node, False)))

        parser = et.XMLTreeBuilder(target=builder)
        self.insnippet = False

        try:
            f = open(self.path, "r")

            while True:
                data = f.read(readsize)

                if not data:
                    break

                parser.feed(data)

                for element in elements:
                    yield element

                del elements[:]

            f.close()
        except IOError:
            self.ok = False
Example #2
0
def parse_xml(xml):
    document = ET.ElementTree()
    if isinstance(xml, unicode):
        xml = xml.encode('utf-8')
    if isinstance(xml, (basestring, buffer)):
        from io import BytesIO
        xml = BytesIO(bytes(xml))
    document.parse(xml, ET.XMLTreeBuilder())
    return document.getroot()
Example #3
0
def parseFile(file):
    treeBuilder = ElementTree.TreeBuilder(element_factory=SimpleElementTreeVar)
    xmlTreeBuilder = ElementTree.XMLTreeBuilder(target=treeBuilder)

    if (not hasattr(file, 'read')):
        ourFile = open(file)
        xmlTreeBuilder.feed(ourFile.read())
        ourFile.close()
    else:
        xmlTreeBuilder.feed(file.read())

    return xmlTreeBuilder.close()
 def __init__(self, file=None, tag='global', **extra):
     if isinstance(file, basestring):
         file = os.path.expanduser(file)
     if file is None:
         top_level_elt = XmlList(tag=tag, **extra)
         top_level_elt.text = top_level_elt.tail = '\n'
         ElementTree.ElementTree.__init__(self, element=top_level_elt)
     else:
         ElementTree.ElementTree.__init__(self)
         self.parse(source=file,
                    parser=ElementTree.XMLTreeBuilder(
                        target=ElementTree.TreeBuilder(XmlList)))
     return
Example #5
0
    def __init__(self, xmlin, out, param={}):
        self.counter = 0
        self.constants = {}
        self.lines = []

        h = open(xmlin, 'r')
        xml = h.read()
        h.close()

        builder = ET.XMLTreeBuilder()
        builder.feed(xml)
        tree = builder.close()

        self.out = out

        self.__walk(tree, None)
        self.__write()
Example #6
0
 def __init__(self, client):
     self.client = client
     self.parser = etree.XMLTreeBuilder(
         target=self)  #XMLParser(target=self)
     self.parser.feed(b'')
     self.__nsmap__ = __nsmap__
Example #7
0
def parseComment(text):
    parser = ElementTree.XMLTreeBuilder()
    parser.feed(text.encode('utf8'))
    root = parser.close()
    return root
Example #8
0
#!/usr/bin/env python2.7
# -*- coding: utf8 -*-
"""Filter out OACI areas depending on geographic position"""

from math import isnan
from optparse import OptionParser
from xml.etree import ElementTree as ET
from pprint import pprint
import sys
import time

parser = ET.XMLTreeBuilder()
prefix = 'http://earth.google.com/kml/2.2'


def PF(s):
    return '{%s}%s' % (prefix, s)


def m2f(m):
    return float(m) / 0.3048


def f2m(m):
    return float(m) * 0.3048


def parse(filename):
    print >> sys.stderr, "Parsing..."
    with filename and open(filename, 'rt') or sys.stdin as f:
        et = ET.parse(f)
Example #9
0
def BuildTree(xmlstring):
    parser = ElementTree.XMLTreeBuilder()
    parser.feed(xmlstring)
    return parser.close()
Example #10
0
def main():
    parser = ET.XMLTreeBuilder(target=OutlinerParser())
    parser.feed(sys.stdin.read())
    parser.close()
Example #11
0
 def __init__(self):
     self.tree_builder = _TerminationDetectingTreeBuilder()
     self.xml_tree_builder = et.XMLTreeBuilder(target=self.tree_builder)
Example #12
0
        except ImportError:
            raise ImportError("You need ElementTree")

if __name__ == "__main__":

    mk = file('MochiKit/MochiKit.js').read()
    modules = map(
        str.strip,
        re.search(r"""(?mxs)MochiKit.MochiKit.SUBMODULES\s*=\s*\[([^\]]+)""",
                  mk).group(1).replace(' ', '').replace('"', '').split(','))

    root = ET.Element("pages")

    for modulename in modules:

        tb = ET.XMLTreeBuilder()
        tb.entity['nbsp'] = " "
        doc = ET.parse("doc/html/MochiKit/%s.html" % modulename, parser=tb)

        mod = ET.SubElement(root, "page")
        mod.attrib.update(
            dict(title="MochiKit.%s" % modulename,
                 type="package",
                 url="http://mochikit.com/doc/html/MochiKit/%s.html" %
                 modulename))

        for a in doc.findall("//{http://www.w3.org/1999/xhtml}a"):
            if a.attrib.get("class", None) == "mochidef reference":
                fun = ET.SubElement(mod, "page")
                fun.attrib.update(
                    dict(title=a.text),
    def end(self, tag):
        # Ignore closing tags
        pass

    def data(self, data):
        # Ignore data inside nodes
        pass

    def close(self):
        # Nothing special to do here
        return


print "Using a custom tree-building class:"
target = PodcastListToCSV(sys.stdout)
with closing(ElementTree.XMLTreeBuilder(target=target)) as parser:
    with closing(open('data/7.6-xml.etree.ElementTree_podcasts.opml',
                      'r')) as f:
        for line in f:
            parser.feed(line)
print

## 7.6.7 Parsing Strings
# To work ith smaller bits of XML text, use XML() with the string containing the XML as the only argument
xml_string_to_parse = """
<root>
    <group>
        <child id="a">This is child "a".</child>
        <child id="b">This is child "b".</child>
    </group>
    <group>