Correct XML ampersand fixup
[youtube-dl] / youtube_dl / utils.py
index 73fe1ad0a3a27165d3dffc61927733beb9c5ed33..70f28414981111d63fb74c00f3ea554702042ea7 100644 (file)
@@ -1092,9 +1092,12 @@ def month_by_name(name):
         return None
 
 
-def fix_xml_all_ampersand(xml_str):
+def fix_xml_ampersands(xml_str):
     """Replace all the '&' by '&' in XML"""
-    return xml_str.replace(u'&', u'&')
+    return re.sub(
+        r'&(?!amp;|lt;|gt;|apos;|quot;|#x[0-9a-fA-F]{,4};|#[0-9]{,4};)',
+        u'&',
+        xml_str)
 
 
 def setproctitle(title):