У меня есть XSD-файл, где мне нужно, чтобы получить пространство имен, как это определено в корневом теге:получить атрибут из XML-узла с определенным значением
<schema xmlns="http://www.w3.org/2001/XMLSchema" xmlns:abw="http://www.liegenschaftsbestandsmodell.de/ns/abw/1.0.1.0" xmlns:adv="http://www.adv-online.de/namespaces/adv/gid/6.0" xmlns:bfm="http://www.liegenschaftsbestandsmodell.de/ns/bfm/1.0" xmlns:gml="http://www.opengis.net/gml/3.2" xmlns:sc="http://www.interactive-instruments.de/ShapeChange/AppInfo" elementFormDefault="qualified" targetNamespace="http://www.liegenschaftsbestandsmodell.de/ns/abw/1.0.1.0" version="1.0.1.0">
<!-- elements -->
</schema>
Теперь как targetNamespace
этой схемы-определению "http://www.liegenschaftsbestandsmodell.de/ns/abw/1.0.1.0"
Мне нужно получить короткий идентификатор для этого пространства имен - это abw
. Чтобы получить этот идентификатор, я должен получить этот атрибут из корневого тега, который имеет то же значение, что и мой targetNamespace
(я не могу полагаться на идентификатор, являющийся частью -string allready, это может измениться в будущем).
По этому вопросу How to extract xml attribute using Python ElementTree Я узнал, как получить значение атрибута, заданного его именем. Однако я не знаю имени атрибутов, только его значение, поэтому что я могу сделать, когда у меня есть значение, и вы хотите выбрать атрибут, имеющий это значение?
Я думаю, что-то вроде этого:
for key in root.attrib.keys():
if(root.attrib[key] == targetNamespace):
return root.attrib[key]
но root.attrib
содержит только elementFormDefault
, targetNamespace
и version
, но не xmlns:abw
.
Вы хотите найти пространства имен –