Пример #1
0
 def render_sub_node(self, parent: Element, value: Any, var: XmlVar,
                     namespaces: Namespaces):
     if isinstance(value, AnyElement):
         self.render_wildcard_node(parent, value, var, namespaces)
     elif var.is_element or is_dataclass(value):
         self.render_element_node(parent, value, var, namespaces)
     elif not parent.text:
         SerializeUtils.set_text(parent, value, namespaces)
     else:
         SerializeUtils.set_tail(parent, value, namespaces)
Пример #2
0
    def render_wildcard_node(self, parent: Element, value: Any, var: XmlVar,
                             namespaces: Namespaces):
        if value.qname:
            sub_element = SubElement(parent, value.qname)
        else:
            sub_element = parent

        namespaces.add_all(value.ns_map)
        SerializeUtils.set_text(sub_element, value.text, namespaces)
        SerializeUtils.set_tail(sub_element, value.tail, namespaces)
        SerializeUtils.set_attributes(sub_element, value.attributes,
                                      namespaces)
        for child in value.children:
            self.render_sub_node(sub_element, child, var, namespaces)

        SerializeUtils.set_nil_attribute(sub_element, var.nillable, namespaces)
Пример #3
0
    def render_wildcard_node(self, parent: Element, value: Any, var: XmlVar,
                             namespaces: Namespaces):
        """Render a child element for the given parent according to the
        wildcard field metadata."""
        if value.qname:
            sub_element = SubElement(parent, value.qname)
        else:
            sub_element = parent

        namespaces.add_all(value.ns_map)
        SerializeUtils.set_text(sub_element, value.text, namespaces)
        SerializeUtils.set_tail(sub_element, value.tail, namespaces)
        SerializeUtils.set_attributes(sub_element, value.attributes,
                                      namespaces)
        for child in value.children:
            self.render_sub_node(sub_element, child, var, namespaces)

        SerializeUtils.set_nil_attribute(sub_element, var.nillable, namespaces)
Пример #4
0
    def test_set_tail(self):
        SerializeUtils.set_tail(self.element, 1, self.namespaces)
        self.assertEqual("1", self.element.tail)

        SerializeUtils.set_tail(self.element, "", self.namespaces)
        self.assertIsNone(self.element.tail)