diff options
| author | Jacob Walls <jacobtylerwalls@gmail.com> | 2026-01-07 16:23:32 -0500 |
|---|---|---|
| committer | Jacob Walls <jacobtylerwalls@gmail.com> | 2026-01-12 16:38:32 -0500 |
| commit | a25158f5cc590f3dff4226c3a48257481e6e67a6 (patch) | |
| tree | 81270e9d7b5483c236ea6413b038e6783541c6f6 /django/core | |
| parent | 1a70889d5837982a111bca0280ea6ca782c6de6b (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.py | 14 |
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)] ) |
