Преобразование моего скрипта Python из lxml в xml.etree

Я пытаюсь преобразовать свой скрипт (https://github.com/fletchermoore/n2c2) для использования пакета по умолчанию xml.etree вместо lxml. Это было упущением с моей стороны, но теперь я понимаю, что было бы невозможно заставить мою целевую аудиторию настроить lxml на своих компьютерах Mac.

Я думаю, что большая часть кода должна работать, просто отключив импорт, но когда я попробовал, я обнаружил, что xml.etree обрабатывает пространства имен по-разному (чего я не понимаю). В частности, как проще всего преобразовать здесь функцию setTagNames. xml создается методом .fromstring().

def setTagNames(self, xml):
    officens = xml.nsmap['office']
    textns = xml.nsmap['text']
    drawns = xml.nsmap['draw']
    xlinkns = xml.nsmap['xlink']
    stylens = xml.nsmap['style']
    fons = xml.nsmap['fo']

    names = {}
    names['body'] = '{%s}body' % officens
    names['text'] = '{%s}text' % officens
    names['auto-styles'] = '{%s}automatic-styles' % officens
    names['list'] = '{%s}list' % textns
    names['list-item'] = '{%s}list-item' % textns
    names['p'] = '{%s}p' % textns
    names['line-break'] = '{%s}line-break' % textns
    names['tab'] = '{%s}tab' % textns
    names['span'] = '{%s}span' % textns
    names['frame'] = '{%s}frame' % drawns
    names['image'] = '{%s}image' % drawns

    names['href'] = '{%s}href' % xlinkns
    names['name'] = '{%s}name' % stylens
    names['style-name'] = '{%s}style-name' % textns
    names['font-weight'] = '{%s}font-weight' % fons
    names['text-underline-style'] = '{%s}text-underline-style' % stylens
    names['font-style'] = '{%s}font-style' % fons
    names['font-size'] = '{%s}font-size' % fons
    names['background-color'] = '{%s}background-color' % fons
    names['color'] = '{%s}color' % fons

    names['style'] = '{%s}style' % stylens
    names['text-properties'] = '{%s}text-properties' % stylens
    self.names = names
    self.builder.names = names

person Fletcher Moore    schedule 22.10.2012    source источник
comment
QName объекты?   -  person Pedro Romano    schedule 22.10.2012


Ответы (1)


Я нашел ответ в другом сообщении: Доступ к атрибуту XMLNS с помощью Python Elementree?

Я использовал функцию, написанную deancutlet, для создания файла nsmap. Все остальное в моем коде работает без изменений.

person Fletcher Moore    schedule 22.10.2012