Я использую lxml (Python 3.7.1) для анализа xml-документа, содержащего xml-сущности.
Мне не удается получить правильный синтаксис для запроса элемента, содержащего объекты XML ("
, '
и т. Д.).
См. Следующий код:
from lxml import etree
root = etree.XML('''
<root>
<item name="abcd">
<ssitem att="efg"/>
</item>
<item name="hi'jk">
<ssitem att="lmn"/>
</item>
</root>
''')
item = root.xpath(".//item[@name='abcd']") # 1
# item = root.xpath(".//item[@name='hi'jk']") # 2
# item = root.xpath(".//item[@name='hi'jk']") # 3
# item = root.xpath('.//item[@name="hi''jk"]') # 4
if len(item) != 0:
print(len(item))
print(item)
name = item[0].xpath(".//@name")
print(name)
else:
print("Nothing")
Когда строка 1 не закомментирована, код работает нормально.
Когда строка 2 (или 3, или 4) не закомментирована (а другие строки закомментированы), ничего не найдено.
Почему это так?
Спасибо.