python повторять xml избегая пространства имен - PullRequest
2 голосов
/ 28 января 2020

с моим python сценарием. Я хочу перебрать мой xml файл в поиске указанного элемента c. У меня есть некоторые проблемы, связанные с пространством имен тега root.

Ниже моей структуры XML:

<?xml version="1.0" ?>
<rootTag xmlns="blablabla">
    <tag_1>
        <sub_tag_1>..something..</sub_tag_1>
    </tag_1>
    <tag_2>
        <sub_tag_2>..something..</sub_tag_2>
    </tag_2>
    ...and so on...
</rootTag>

Ниже моей PYTHON script:

import xml.etree.ElementTree as ET

root = ET.fromstring(xml_taken_from_web)
print(root.tag)

Проблема в том, что выходные данные print:

{blablabla} rootTag

, поэтому когда я его поверх него все теги tag_1, tag_2 и т. д. будут иметь строку {blablabla}, поэтому я не могу выполнить проверку тега.

Я пытался использовать регулярное выражение таким образом

root = re.sub('^{.*?}', '', root.tag)

проблема в том, что root после этого является строковым типом, и поэтому я не могу переопределить такой тип элемента

Как я могу распечатать только rootTag?

1 Ответ

2 голосов
/ 28 января 2020

С этим просто используйте:

import xml.etree.ElementTree as ET
from lxml import etree

root = ET.fromstring(xml_taken_from_web)
print(etree.QName(root.tag).localname)
...