Равенство элементов Lxml с пространствами имен

Я пытаюсь использовать Lxml для анализа содержимого документа .docx. Я понимаю, что lxml заменяет префиксы пространства имен фактическим пространством имен, однако это затрудняет проверку того, с каким тегом элемента я работаю. Я хотел бы иметь возможность сделать что-то вроде

if (someElement.tag == "w:p"):

, но поскольку lxml настаивает на добавлении полного пространства имен I ' d либо нужно сделать что-то вроде

if (someElemenet.tag == "{http://schemas.openxmlformats.org/wordprocessingml/2006/main}p'):

, либо выполнить поиск полного имени пространства имен из атрибута nsmap элемента, как этот

targetTag = "{%s}p" % someElement.nsmap['w']
if (someElement.tag == targetTag):

Если бы существовал более простой способ убедить lxml выполнить либо

  1. Дайте мне строку тега без добавленное к нему пространство имен, я могу использовать атрибут префикса вместе с этой информацией, чтобы проверить, с каким тегом я работаю ИЛИ
  2. Просто дайте мне строку тега с префиксом

. Это сэкономит много нажатий клавиш при написании этот парсер. Это возможно? Я что-то упустил в документации?

8
задан mjn12 30 March 2011 в 23:40
поделиться