相关疑难解决方法(0)

lxml etree xmlparser删除不需要的命名空间

我有一个xml doc,我试图使用Etree.lxml解析

<Envelope xmlns="http://www.example.com/zzz/yyy">
  <Header>
    <Version>1</Version>
  </Header>
  <Body>
    some stuff
  <Body>
<Envelope>
Run Code Online (Sandbox Code Playgroud)

我的代码是:

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

当我尝试获取dom.getroot()时,我得到:

<Element {http://www.example.com/zzz/yyy}Envelope at 28adacac>
Run Code Online (Sandbox Code Playgroud)

但是我只想要:

<Element Envelope at 28adacac>
Run Code Online (Sandbox Code Playgroud)

当我做

dom.getroot().find("Body")
Run Code Online (Sandbox Code Playgroud)

我没有得到任何回报.但是,当我

dom.getroot().find("{http://www.example.com/zzz/yyy}Body") 
Run Code Online (Sandbox Code Playgroud)

我得到了一个结果.

我认为将ns_clean = True传递给解析器会阻止这种情况.

有任何想法吗?

python lxml elementtree xml-parsing

51
推荐指数
3
解决办法
3万
查看次数

标签 统计

elementtree ×1

lxml ×1

python ×1

xml-parsing ×1