Я предлагаю этот обходной путь (XPath 2.0):
Предполагая, что у вас есть элемент с атрибутом, который содержит одинарные и двойные кавычки:
<div>
<note player="Ba'g"N Toast">foo</note>
</div>
Чтобы выбрать этот узел с помощью XPath и фиксированная переменная, мы можем использовать что-то вроде:
import re
player = '''Ba'g"N Toast'''
result = re.sub(r"(.+)", r"'\1'",player.replace("'","',codepoints-to-string(39),'").replace('"',"',codepoints-to-string(34),'"))
xpathstring = "//note[@player=concat({})]".format(result)
p = xmltree.find(xpathstring)
Мы заменяем '
и "
их эквивалентами кодовых точек. Результат будет передан функции concat
в выражении XPath.