Вот мой код и XML:поиск XML текстом тегов с помощью питона
xml_string = """
<data>
<user>
<name>123</name>
</user>
<user>
<name>456</name>
</user>
</data>
"""
import xml.etree.ElementTree as ET
root = ET.fromstring(xml_string)
Я пытаюсь найти <user>
тег где <name>
имеет текстовое значение, равное 123.
То, что я пытался:
result = root.findall("./user[name = '123']")
result = root.findall("./user[./name = '123']")
result = root.findall("./user[/name = '123']")
result = root.findall("./user[./name text() = '123']")
Ни одна из этих попыток не работала. Что мне не хватает?
Ошибка я получаю:
raise SyntaxError("invalid predicate")
File "<string>", line None
SyntaxError: invalid predicate
Возможно, регулярное выражение может работать? –
Если это то, что вы пытаетесь найти '', regex выполнит эту работу. –
@JoeR это точно противоположно совету, который вы должны дать; regex is * not * лучший способ анализа XML, который * не * является обычным языком, см., например, http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags/1732454#1732454 – jonrsharpe