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)
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)
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
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
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()
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
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())