al insertar elemento se ubica continuo a los primos
FossilOrigin-Name: 3c26c6d8803c30d15f9baa083fc8cfc2ed8993061196f3299162d6a899680735
This commit is contained in:
		| @@ -88,6 +88,9 @@ class LXMLBuilder: | |||||||
|     def append(self, elem, child): |     def append(self, elem, child): | ||||||
|         elem.append(child) |         elem.append(child) | ||||||
|  |  | ||||||
|  |     def append_next(self, elem, slibing): | ||||||
|  |         elem.addnext(slibing) | ||||||
|  |  | ||||||
|     def remove(self, elem): |     def remove(self, elem): | ||||||
|         elem.getparent().remove(elem) |         elem.getparent().remove(elem) | ||||||
|  |  | ||||||
| @@ -223,10 +226,18 @@ class FachoXML: | |||||||
|                 self.builder.append(current_elem, node) |                 self.builder.append(current_elem, node) | ||||||
|                 current_elem = node |                 current_elem = node | ||||||
|  |  | ||||||
|  |  | ||||||
|         # se fuerza la adicion como un nuevo elemento |         # se fuerza la adicion como un nuevo elemento | ||||||
|         if append: |         if append: | ||||||
|             node = self.builder.build_from_expression(node_paths[-1]) |             node_tag = node_paths[-1] | ||||||
|             self.builder.append(parent, node) |             last_slibing = current_elem | ||||||
|  |  | ||||||
|  |             for child in parent.getchildren(): | ||||||
|  |                 if child.tag == node_tag: | ||||||
|  |                     last_slibing = child | ||||||
|  |  | ||||||
|  |             node = self.builder.build_from_expression(node_tag) | ||||||
|  |             self.builder.append_next(last_slibing, node) | ||||||
|             return node |             return node | ||||||
|  |  | ||||||
|         return current_elem |         return current_elem | ||||||
|   | |||||||
| @@ -209,3 +209,13 @@ def test_facho_xml_get_element_attribute(): | |||||||
|     xml = facho.FachoXML('root') |     xml = facho.FachoXML('root') | ||||||
|     xml.set_element('./Id', 'mero', code = 'ABC') |     xml.set_element('./Id', 'mero', code = 'ABC') | ||||||
|     assert xml.get_element_attribute('/root/Id', 'code') == 'ABC' |     assert xml.get_element_attribute('/root/Id', 'code') == 'ABC' | ||||||
|  |  | ||||||
|  | def test_facho_xml_keep_orden_slibing(): | ||||||
|  |     xml = facho.FachoXML('root') | ||||||
|  |     xml.find_or_create_element('./A') | ||||||
|  |     xml.find_or_create_element('./B') | ||||||
|  |     xml.find_or_create_element('./C') | ||||||
|  |     xml.find_or_create_element('./B', append=True) | ||||||
|  |     xml.find_or_create_element('./A', append=True) | ||||||
|  |  | ||||||
|  |     assert xml.tostring() == '<root><A/><A/><B/><B/><C/></root>' | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user