在lxml - python中将命名空间转换为节点名

时间:2013-05-21 18:44:22

标签: python xml python-2.7 lxml xml-namespaces

我正在使用lxml库...我在名为

xml文件中有一个标签

<a:rPr lang="en-US" dirty="0" smtClean="0"/> 前缀a指的是命名空间

a="http://schemas.openxmlformats.org/drawingml/2006/main"^

当我使用lxml-Xpath将标记名称设为a:rPr时,我得到的结果为{http://schemas.openxmlformats.org/drawingml/2006/main}rPr'

以下是我编写的代码段:

if doc == 'file.xml':
        file = etree.parse(my_directory+doc)
        path = file.xpath('/p:sld/p:cSld/p:spTree/p:sp/p:txBody/a:p/a:r/a:rPr', namespaces={'p':'http://schemas.openxmlformats.org/presentationml/2006/main',
            'a':'http://schemas.openxmlformats.org/drawingml/2006/main'})
        #print path
        for a in path:
            print a.tag

我使用了xml.minidom,我可以使用a.nodeName来获取标记名,但我不知道哪个函数可以在lxml中为我提供没有名称空间的标记名称a:rPr? 提前谢谢。

1 个答案:

答案 0 :(得分:0)

使用xpath的name()

for a in path:
    print a.xpath('name()')  # prints a:rPr

希望有所帮助。