Как я могу получить пространство имен xml в ElementTree, когда xml вводится как строка? - PullRequest
0 голосов
/ 16 января 2020

ТАК У меня есть скрипт, который будет анализировать xml файлы и превращать их в pandas фреймы данных для дальнейшего использования. Это прекрасно работает, когда я даю ввод как фактический файл, но если я получаю ввод непосредственно из запроса URL и пытаюсь загрузить его как строку, я сталкиваюсь с проблемой невозможности захватить пространство имен.

Если я введу его таким образом

tree = ET.parse(file)
root = tree.getroot()
ns = dict([node for _, node in ET.iterparse('test.xml', events=['start-ns'])])

Он отлично работает, и я могу получить контроль над пространствами имен. Однако, когда я получаю его непосредственно из URL и получаю root, как это

root = ET.fromstring(string_from_url)

, оно не работает, так как метод ET.iterparse принимает только файл в качестве входных данных. Я знаю, что захват пространства имен - это отдельный процесс от получения xml до root, но я просто подумал, что мне стоит включить, чтобы показать причину проблемы.

Так что вопрос в том, как я могу получить пространства имен, когда в качестве входных данных используется только строка?

...