Esempio n. 1
0
def new_parsetree_from_xml(xml):
    # For some reason this does not work with cElementTree.XMLBuilder ...
    from xml.etree.ElementTree import XMLTreeBuilder
    from zim.formats import ParseTree
    builder = XMLTreeBuilder()
    builder.feed(xml)
    root = builder.close()
    return ParseTree(root)
Esempio n. 2
0
	def runTest(self):
		'''Test OldParseTreeBuilder class'''
		# - Test \n before and after h / p / pre
		# - Test break line into lines
		input = '''\
<?xml version='1.0' encoding='utf-8'?>
<zim-tree>
foo<h level="1">bar</h>baz

dus<pre>ja</pre>hmm

<h level="2">foo
</h>bar

dus ja <emphasis>hmm
dus ja
</emphasis>grrr

<strong>foo

bar
</strong>
<strike></strike><emphasis>   </emphasis>.
</zim-tree>'''

		wanted = '''\
<?xml version='1.0' encoding='utf-8'?>
<zim-tree>
foo

<h level="1">bar</h>
baz

dus
<pre>ja
</pre>hmm

<h level="2">foo</h>
bar

dus ja <emphasis>hmm</emphasis>
<emphasis>dus ja</emphasis>
grrr

<strong>foo</strong>

<strong>bar</strong>

   .
</zim-tree>'''

		# For some reason this does not work with cElementTree.XMLBuilder ...
		from xml.etree.ElementTree import XMLTreeBuilder
		builder = XMLTreeBuilder(target=OldParseTreeBuilder())
		builder.feed(input)
		root = builder.close()
		tree = ParseTree(root)
		self.assertEqual(tree.tostring(), wanted)
Esempio n. 3
0
def kplist_parse(plist):
    """Parse a kernel-style property list."""
    try:
        builder = _KPlistBuilder()
        parser  = XMLTreeBuilder(target=builder)
        parser.feed(plist)
        return parser.close()
    except:
        return None
Esempio n. 4
0
def parseXRDS(text):
    """Parse the given text as an XRDS document.

    @return: ElementTree containing an XRDS document

    @raises XRDSError: When there is a parse error or the document does
        not contain an XRDS.
    """
    try:
        parser = XMLTreeBuilder()
        parser.feed(text)
        element = parser.close()
    except XMLError, why:
        exc = XRDSError('Error parsing document as XML')
        exc.reason = why
        raise exc
Esempio n. 5
0
 def _set_led(self, val):
     global glob_led_policy, glob_led_signal_list
     if not self.preview_list[val].display_type == 'not_checked':
         return
     new_signal = ElementTree()
     parser = XMLTreeBuilder()
     if val == 3:
         parser.feed(glob_signal_ALL)
     else:
         parser.feed(glob_signal_RBO)
     new_signal._root = parser.close()
     new_signal_list = new_signal.getiterator("signal")
     new_signal_list[0].attrib = glob_led_signal_list[
         self.signal_num].attrib
     new_signal_list[0].tail = glob_led_signal_list[self.signal_num].tail
     glob_led_policy.remove(glob_led_signal_list[self.signal_num])
     glob_led_policy.insert(self.signal_num, new_signal_list[0])
     glob_led_signal_list[self.signal_num] = new_signal_list[0]
     for i in range(len(self.preview_list)):
         self.preview_list[i].display_type = self._get_led(i)
         self.preview_list[i].reset_view()
Esempio n. 6
0
def build_sql_queries(filename, bbox=None):
    if bbox != None:
        target = SQLBuilder(box_node_list='box_node_list',
                            box_way_list='box_way_list')
    else:
        target = SQLBuilder()

    init_queries = []

    ## If bounding box is given, create a temporary table and
    ## store all matching nodes there
    if bbox != None:
        ## Create tables
        init_queries.append("CREATE TEMPORARY TABLE box_node_list "
                            "(id bigint PRIMARY KEY) ON COMMIT DROP")
        init_queries.append("CREATE TEMPORARY TABLE box_way_list "
                            "(id bigint PRIMARY KEY) ON COMMIT DROP")

        ## Fill them
        bbox_sql = "GeomFromEWKT('POLYGON((%f %f,%f %f,%f %f,%f %f,%f %f))')"%\
            (bbox[0],bbox[1],bbox[2],bbox[1],bbox[2],bbox[3],bbox[0],bbox[3],
             bbox[0],bbox[1])

        srid = "find_srid('','nodes','geom')"

        init_queries.append("INSERT INTO box_node_list SELECT id FROM nodes "
                            "WHERE (geom && SetSRID(%s,%s) )" %
                            (bbox_sql, srid))

        init_queries.append("INSERT INTO box_way_list "
                            "SELECT wn.way_id FROM way_nodes wn "
                            "INNER JOIN box_node_list n ON wn.node_id = n.id "
                            "GROUP BY wn.way_id")

    parser = XMLTreeBuilder(target=target)

    parser.feed(open(filename).read())

    return init_queries, target.result
from xml.etree.ElementTree import XMLTreeBuilder
class MaxDepth:                     # The target object of the parser
    maxDepth = 0
    depth = 0
    def start(self, tag, attrib):   # Called for each opening tag.
        self.depth += 1
        if self.depth > self.maxDepth:
            self.maxDepth = self.depth
    def end(self, tag):             # Called for each closing tag.
        self.depth -= 1
    def data(self, data):
        pass            # We do not need to do anything with data.
    def close(self):    # Called when all data has been parsed.
        return self.maxDepth
target = MaxDepth()
parser = XMLTreeBuilder(target=target)
n = int(raw_input())
exampleXml = ""
for _ in range(n):
    exampleXml += raw_input()+"\n"
parser.feed(exampleXml)
print parser.close()-1
Esempio n. 8
0
 def parse_file(self, fname):
     if os.path.exist(fname):
         self.xml = XMLTreeBuilder(target=self)
         self.xml.curr = self
         fh = file(fname)
         self.xml.feed(fh.read())