Android не имеет такого представления. Но вы можете создать пользовательские компоненты на основе ваших потребностей. Для вашего конкретного случая этот должен быть точным. Для более сложного сценария вы можете ссылаться на на этот на github.
Другой вариант - перебирать атрибуты и возвращать значение атрибута с локальным именем, оканчивающимся на backgroundImage
.
Пример ...
from xml.etree import ElementTree as ET
XML = '''
<body xmlns:ttm="http://www.w3.org/ns/ttml#metadata"
xmlns:smpte="http://smpte-ra.org/schemas/2052-1/2013/smpte-tt">
<div region="imageRegion" xml:id="img_SUB6756004155_0"
ttm:role="caption" smpte:backgroundImage="#SUB6756004155_0"></div>
</body>'''
root = ET.fromstring(XML)
div = root.find("div")
val = next((v for k, v in div.attrib.items() if k.endswith('backgroundImage')), None)
if val:
print(f"Value: {val}")
Выходы ...
Value: #SUB6756004155_0
Это может быть хрупким, хотя. Он возвращает только первый найденный атрибут.
Если это проблема, возможно, используйте вместо этого список:
val = [v for k, v in div.attrib.items() if k.endswith('backgroundImage')]
Это также неправильно вернет атрибут, который заканчивается на «backgroundImage» (например, «invalid_backgroundImage»).
Если это проблема, возможно используйте вместо этого регулярное выражение:
val = next((v for k, v in div.attrib.items() if re.match(r".*}backgroundImage$", "}" + k)), None)
Если вы когда-нибудь сможете переключиться на lxml, тестирование локального имени можно выполнить в xpath ... [1113 ]
val = div.xpath("@*[local-name()='backgroundImage']")
Приведенный ниже фрагмент демонстрирует, как можно получить значение атрибута smpte:backgroundImage
из правильно сформированного документа XML (входной документ в вопросе не является правильно сформированным).
smpte:
означает, что атрибут связан с пространством имен, которое является http://smpte-ra.org/schemas/2052-1/2013/smpte-tt
, судя по скриншоту. Обратите внимание, что оба префикса ttm
и smpte
должны быть объявлены в документе XML (xmlns:ttm="..."
и xmlns:smpte="..."
).
В вызове get()
имя атрибута должно быть дано в «Запись Кларка» : {http://smpte-ra.org/schemas/2052-1/2013/smpte-tt}backgroundImage
.
from xml.etree import ElementTree as ET
XML = '''
<body xmlns:ttm="http://www.w3.org/ns/ttml#metadata"
xmlns:smpte="http://smpte-ra.org/schemas/2052-1/2013/smpte-tt">
<div region="imageRegion" xml:id="img_SUB6756004155_0"
ttm:role="caption" smpte:backgroundImage="#SUB6756004155_0"></div>
</body>'''
root = ET.fromstring(XML)
div = root.find("div")
print(div.get("{http://smpte-ra.org/schemas/2052-1/2013/smpte-tt}backgroundImage"))
Выход:
#SUB6756004155_0