Этот вопрос является продолжением этого ответа: { ссылка }
Я пытаюсь удалить пространство имен из файла XML. Связанный ответ отлично работает, если в XML нет комментариев. Однако, если есть комментарий, выдается ошибка.
Это пример моего кода:
from lxml import etree
input_xml = '''
<package xmlns="http://apple.com/itunes/importer">
<provider>some data <!-- example comment--> </provider>
<language>en-GB</language>
</package>
'''
root = etree.fromstring(input_xml)
# Remove namespace prefixes
for elem in root.getiterator():
elem.tag = etree.QName(elem).localname
# Remove unused namespace declarations
etree.cleanup_namespaces(root)
print(etree.tostring(root).decode())
Выдает следующую ошибку:
ValueError: Неверный тег ввода типа class <'cython_function_or_method'>
РЕДАКТИРОВАТЬ:
Если у меня есть следующая структура "input_ xml", не все пространства имен убираются с использованием кода, приведенного в ответе ниже.
<package xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://com/scheme/location/example/ Location.xsd ">
<provider>some data <!-- example comment--> </provider>
<language>en-GB</language>
</package>
Результат кода по-прежнему:
<package xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://com/scheme/location/example/ Location.xsd ">
<provider>some data <!-- example comment--> </provider>
<language>en-GB</language>
</package>