Skip to content

Commit 5f0001e

Browse files
committed
use ElementTree to create correctly escaped XML for delete()
1 parent 7bfe7a2 commit 5f0001e

File tree

1 file changed

+10
-3
lines changed

1 file changed

+10
-3
lines changed

pysolr.py

+10-3
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@
99
import re
1010
import time
1111
from xml.etree import ElementTree
12-
import xml.sax.saxutils
1312

1413
import requests
1514
from pkg_resources import DistributionNotFound, get_distribution, parse_version
@@ -1120,12 +1119,20 @@ def delete(
11201119
else:
11211120
doc_id = list(filter(None, id))
11221121
if doc_id:
1123-
m = "<delete>%s</delete>" % "".join("<id>%s</id>" % xml.sax.saxutils.escape(i) for i in doc_id)
1122+
et = ElementTree.Element("delete")
1123+
for one_doc_id in doc_id:
1124+
subelem = ElementTree.SubElement(et,'id')
1125+
subelem.text = one_doc_id
1126+
m = ElementTree.tostring(et)
11241127
else:
11251128
raise ValueError("The list of documents to delete was empty.")
11261129
elif q is not None:
11271130
xml_escaped_q = xml.sax.saxutils.escape(q)
1128-
m = "<delete><query>%s</query></delete>" % xml_escaped_q
1131+
1132+
et = ElementTree.Element("delete")
1133+
subelem = ElementTree.SubElement(et,'query')
1134+
subelem.text = q
1135+
m = ElementTree.tostring(et)
11291136

11301137
return self._update(
11311138
m,

0 commit comments

Comments
 (0)