aboutsummaryrefslogtreecommitdiffstats
path: root/djangorestframework/parsers.py
diff options
context:
space:
mode:
Diffstat (limited to 'djangorestframework/parsers.py')
-rw-r--r--djangorestframework/parsers.py21
1 files changed, 8 insertions, 13 deletions
diff --git a/djangorestframework/parsers.py b/djangorestframework/parsers.py
index 79e14260..b99423a0 100644
--- a/djangorestframework/parsers.py
+++ b/djangorestframework/parsers.py
@@ -187,12 +187,11 @@ class XMLParser(BaseParser):
`data` will simply be a string representing the body of the request.
`files` will always be `None`.
"""
- data = {}
tree = ET.parse(stream)
data = self._xml_convert(tree.getroot())
-
+
return (data, None)
-
+
def _xml_convert(self, element):
"""
convert the xml `element` into the corresponding python object
@@ -203,19 +202,15 @@ class XMLParser(BaseParser):
if len(children) == 0:
return self._type_convert(element.text)
else:
- if element.tag == "resource":
+ # if the fist child tag is list-item means all children are list-item
+ if children[0].tag == "list-item":
data = []
for child in children:
- data.append(self._xml_convert(child))
+ data.append(self._xml_convert(child))
else:
- if children[0].tag == "resource":
- data = []
- for child in children:
- data.append(self._xml_convert(child))
- else:
- data = {}
- for child in children:
- data[child.tag] = self._xml_convert(child)
+ data = {}
+ for child in children:
+ data[child.tag] = self._xml_convert(child)
return data