diff options
| -rw-r--r-- | django/core/serializers/xml_serializer.py | 14 | ||||
| -rw-r--r-- | tests/fixtures/fixtures/invalid_deeply_nested_elements.xml | 2 |
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> |
