summaryrefslogtreecommitdiff
path: root/django/core
diff options
context:
space:
mode:
authorJacob Walls <jacobtylerwalls@gmail.com>2026-01-07 16:23:32 -0500
committerJacob Walls <jacobtylerwalls@gmail.com>2026-01-12 16:38:32 -0500
commita25158f5cc590f3dff4226c3a48257481e6e67a6 (patch)
tree81270e9d7b5483c236ea6413b038e6783541c6f6 /django/core
parent1a70889d5837982a111bca0280ea6ca782c6de6b (diff)
Refs #36769 -- Avoided visiting grandchild nodes in XML Deserializer.
The only use case for visiting grandchild nodes turned out to be to support an unintentionally invalid fixture in the test suite. The invalid fixture added in #36969 was modeled on fixture9.xml in dae08cf55b83caef5e8ee39b16417692e8565278, so that is corrected as well in this commit, where the test will still pass.
Diffstat (limited to 'django/core')
-rw-r--r--django/core/serializers/xml_serializer.py14
1 files changed, 5 insertions, 9 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)]
)