lxml etree xmlparser удалить нежелательное пространство имен

У меня есть xml-документ, который я пытаюсь проанализировать с помощью Etree.lxml

<Envelope xmlns="http://www.example.com/zzz/yyy">
  <Header>
    <Version>1</Version>
  </Header>
  <Body>
    some stuff
  <Body>
<Envelope>

Мой код:

path = "path to xml file"
from lxml import etree as ET
parser = ET.XMLParser(ns_clean=True)
dom = ET.parse(path, parser)
dom.getroot()

Когда я пытаюсь получить dom.getroot (), я получаю:

<Element {http://www.example.com/zzz/yyy}Envelope at 28adacac>

Однако я хочу только:

<Element Envelope at 28adacac>

Когда я делаю

dom.getroot().find("Body")

, я ничего не получаю. Тем не мение, когда я

dom.getroot().find("{http://www.example.com/zzz/yyy}Body") 

получаю результат.

Я думал, что передача ns_clean = True в парсер предотвратит это.

Есть идеи?

51
задан Kenster 3 September 2016 в 05:22
поделиться