diff --git a/utils/resedit/data.py b/utils/resedit/data.py index 6633417..a7d9c38 100644 --- a/utils/resedit/data.py +++ b/utils/resedit/data.py @@ -42,10 +42,8 @@ def load_Tag(node, do_array=None, do_special=None): for child in filter(lambda x: x.nodeType == x.ELEMENT_NODE, node.childNodes): n = 0 - if node.nodeName not in do_array and \ - do_special != None and \ - node.nodeName not in do_special.keys(): - children, n = load_Tag(child, do_array, do_special) + + children, n = load_Tag(child, do_array, do_special) # Just slap the children on. if n > 0: @@ -60,6 +58,9 @@ def load_Tag(node, do_array=None, do_special=None): section[child.firstChild.data] = \ child.attributes[do_special[node.nodeName]].value + elif n > 0: + section[child.nodeName] = children + # Normal way (but will overwrite lists). else: section[child.nodeName] = child.firstChild.data @@ -86,44 +87,7 @@ def save(xmlfile, data, basetag, tag, has_name=True, do_array=None, do_special=N if has_name: elem.setAttribute("name", key) - for key2, value2 in value.items(): - node = xml.createElement(key2) - - # Check if it needs to parse an array instead of a dictionary. - if do_array != None and key2 in do_array.keys(): - for text in value2: - node2 = xml.createElement(do_array[key2]) - txtnode = xml.createTextNode(str(text)) - node2.appendChild(txtnode) - node.appendChild(node2) - - # Check to see if we need to run the ULTRA_UBER_HACK. - elif do_special != None and key2 in do_special.keys(): - for key3, value3 in value2.items(): - node2 = xml.createElement(do_special[key2][0]) - node2.setAttribute(do_special[key2][1], value3) - txtnode = xml.createTextNode(str(key3)) - node2.appendChild(txtnode) - node.appendChild(node2) - - # Standard dictionary approach. - else: - for key3, value3 in value2.items(): - node2 = xml.createElement(key3) - - if isinstance(value3, dict): - for key4, value4 in value3.items(): - node3 = xml.createElement(key4) - txtnode = xml.createTextNode(str(value4)) - node3.appendChild(txtnode) - node2.appendChild(node3) - else: - txtnode = xml.createTextNode(str(value3)) - node2.appendChild(txtnode) - - node.appendChild(node2) - - elem.appendChild(node) + save_Tag(xml, elem, value, do_array, do_special) base.appendChild(elem) xml.appendChild(base) @@ -132,3 +96,34 @@ def save(xmlfile, data, basetag, tag, has_name=True, do_array=None, do_special=N xml.unlink() +def save_Tag(xml, parent, data, do_array=None, do_special=None): + for key, value in data.items(): + node = xml.createElement(key) + + # Check if it needs to parse an array instead of a dictionary. + if do_array != None and key in do_array.keys(): + for text in value: + node2 = xml.createElement(do_array[key]) + txtnode = xml.createTextNode(str(text)) + node2.appendChild(txtnode) + node.appendChild(node2) + + # Check see if we need to run the ULTRA UBER HACK! + elif do_special != None and key in do_special.keys(): + for key2, value2 in value.items(): + node2 = xml.createElement(do_special[key][0]) + node2.setAttribute(do_special[key][1], value2) + txtnode = xml.createTextNode(str(key2)) + node2.appendChild(txtnode) + node.appendChild(node2) + + elif isinstance(value, dict): + save_Tag(xml, node, value, do_array, do_special) + + # Standard dictionary approach. + else: + txtnode = xml.createTextNode(str(value)) + node.appendChild(txtnode) + + parent.appendChild(node) + diff --git a/utils/resedit/data.pyc b/utils/resedit/data.pyc index e853806..8e00a9b 100644 Binary files a/utils/resedit/data.pyc and b/utils/resedit/data.pyc differ