Skip to content
Snippets Groups Projects
Commit 602132e7 authored by Alexander Schlemmer's avatar Alexander Schlemmer
Browse files

ENH: draft of create_children function for xml tag converter

parent 616c2f8a
No related branches found
No related tags found
2 merge requests!181Release 0.9.0,!174XML Converter
Pipeline #54370 failed
This commit is part of merge request !174. Comments created here will be created in the context of that merge request.
......@@ -75,27 +75,18 @@ class XMLTagConverter(Converter):
if not isinstance(element, XMLTagElement):
raise TypeError("Element must be an instance of XMLTagElement.")
# The options text_as_children, attribs_as_children and
# tags_as_children are currently not implemented.
nsmap = self.definition["nsmap"]
xpath = self.definition.get("xpath", "child::*")
children = element.tag.xpath(xpath, namespaces=nsmap)
el_lst = []
if "xpath" in self.definition:
# in this case it does not make sense to use the other "children"-options:
# for opt in ("text_", "attribs_", "tags_"):
# if opt + "_as_children" in self.definition:
# raise RuntimeError("The option {} cannot be used when using"
# " xpath".format(opt))
# if xpath is present, use the xpath to generate children
children = element.xpath(self.definition["xpath"])
else:
# use the direct children of the node instead
children = list(element)
# if "text_as_children" in self.definition and self.definition["text_as_children"] == True:
# el_lst.append(XMLTextNode(element, element.tree))
# if "attribs_as_children" in self.definition and self.definition["attribs_as_children"] == True:
# # el_lst.append(XMLTextNode(element, element.tree))
for el in children:
el_lst.append(XMLTagElement(el, element.tree))
if isinstance(el, str):
el_lst.append(XMLTextNode(el))
elif isinstance(el, lxml.etree._Element):
el_lst.append(XMLTagElement(el))
else:
raise RuntimeError("Unsupported child type.")
return el_lst
def typecheck(self, element: StructureElement):
"""
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment