summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--django/core/serializers/xml_serializer.py14
-rw-r--r--tests/fixtures/fixtures/invalid_deeply_nested_elements.xml2
2 files changed, 6 insertions, 10 deletions
diff --git a/django/core/serializers/xml_serializer.py b/django/core/serializers/xml_serializer.py
index d43865c257..e159180e17 100644
--- a/django/core/serializers/xml_serializer.py
+++ b/django/core/serializers/xml_serializer.py
@@ -439,17 +439,13 @@ class Deserializer(base.Deserializer):
)
+def check_element_type(element):
+ return element.nodeType in (element.TEXT_NODE, element.CDATA_SECTION_NODE)
+
+
def getInnerText(node):
- """Get the inner text of a DOM node and any children one level deep."""
- # inspired by
- # https://mail.python.org/pipermail/xml-sig/2005-March/011022.html
return "".join(
- [
- element.data
- for child in node.childNodes
- for element in (child, *child.childNodes)
- if element.nodeType in (element.TEXT_NODE, element.CDATA_SECTION_NODE)
- ]
+ [child.data for child in node.childNodes if check_element_type(child)]
)
diff --git a/tests/fixtures/fixtures/invalid_deeply_nested_elements.xml b/tests/fixtures/fixtures/invalid_deeply_nested_elements.xml
index cd164d3d26..2ed39c3d36 100644
--- a/tests/fixtures/fixtures/invalid_deeply_nested_elements.xml
+++ b/tests/fixtures/fixtures/invalid_deeply_nested_elements.xml
@@ -3,7 +3,7 @@
<object pk="1" model="fixtures.person">
<field type="CharField" name="name">
- <natural>Django <em>pony</em></natural>
+ Django <em>pony</em>
</field>
</object>