def _parse_spec(self, path): if not os.path.isfile(path): raise DataError("Spec file '%s' does not exist." % path) with ETSource(path) as source: root = ET.parse(source).getroot() if root.tag != 'keywordspec': raise DataError("Invalid spec file '%s'." % path) return root
def _verify_node(self, node, name, text=None, attrs={}): if node is None: with ETSource(PATH) as source: node = ET.parse(source).getroot() assert_equals(node.tag, name) if text is not None: assert_equals(node.text, text) assert_equals(node.attrib, attrs)
def test_rows_are_not_split_if_there_are_headers(self): output = self._add_long_step_and_save("html") with ETSource("\n".join(output.splitlines()[1:])) as source: tree = ET.parse(source) lines = tree.findall("body/table/tr") assert_equals(len(lines), 3) for l in lines: cols = l.findall("td") or l.findall("th") assert_equals(len(cols), 9)
def test_rows_are_not_split_if_there_are_headers(self): output = self._add_long_step_and_save('html') with ETSource('\n'.join(output.splitlines()[1:])) as source: tree = ET.parse(source) lines = tree.findall('body/table/tr') assert_equal(len(lines), 3) for l in lines: cols = l.findall('td') or l.findall('th') assert_equal(len(cols), 9)
def test_content_with_unicode(self): self.writer.start("root") self.writer.element(u"e", u"Circle is 360\u00B0") self.writer.element(u"f", u"Hyv\u00E4\u00E4 \u00FC\u00F6t\u00E4") self.writer.end("root") self.writer.close() with ETSource(PATH) as source: root = ET.parse(source).getroot() self._verify_node(root.find("e"), "e", u"Circle is 360\u00B0") self._verify_node(root.find("f"), "f", u"Hyv\u00E4\u00E4 \u00FC\u00F6t\u00E4")
def test_write_many_elements(self): self.writer.start("root", {"version": "test"}) self.writer.start("child1", {"my-attr": "my value"}) self.writer.element("leaf1.1", "leaf content", {"type": "kw"}) self.writer.element("leaf1.2") self.writer.end("child1") self.writer.element("child2", attrs={"class": "foo"}) self.writer.end("root") self.writer.close() with ETSource(PATH) as source: root = ET.parse(source).getroot() self._verify_node(root, "root", attrs={"version": "test"}) self._verify_node(root.find("child1"), "child1", attrs={"my-attr": "my value"}) self._verify_node(root.find("child1/leaf1.1"), "leaf1.1", "leaf content", {"type": "kw"}) self._verify_node(root.find("child1/leaf1.2"), "leaf1.2") self._verify_node(root.find("child2"), "child2", attrs={"class": "foo"})
def parse_xml(self, source): """Parses the given XML file or string into an element structure. The `source` can either be a path to an XML file or a string containing XML. In both cases the XML is parsed into ElementTree [http://docs.python.org/library/xml.etree.elementtree.html#xml.etree.ElementTree.Element|element structure] and the root element is returned. Examples: | ${xml} = | Parse XML | ${CURDIR}/test.xml | | ${root} = | Parse XML | <root><child/></root> | For more details and examples, see `Parsing XML` section in the `introduction`. See also `Get Element` and `Get Elements`. """ with ETSource(source) as source: return ET.parse(source).getroot()
def get_interpreter(output): tree = ET.parse(output) root = tree.getroot() return Interpreter(*MATCHER.match(root.attrib['generator']).groups())
def _xml_lines(self, text): with ETSource(text) as source: tree = ET.parse(source) output = StringIO() tree.write(output) return output.getvalue().splitlines()
def _get_root(self): self.writer.close() with ETSource(PATH) as source: return ET.parse(source).getroot()
def parse_xml(self, source): with ETSource(source) as source: return ET.parse(source).getroot()
def _xml_lines(self, text): with ETSource(text) as source: tree = ET.parse(source) output = BytesIO() tree.write(output) return output.getvalue().splitlines()
def _parse_spec(self, path): with ETSource(path) as source: return ET.parse(source).getroot()