【问题标题】:conversion of namespace to nodename in lxml - python在lxml中将命名空间转换为节点名 - python
【发布时间】:2013-05-21 18:44:21
【问题描述】:

我正在使用 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'

这是我写的sn-p代码:

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? 提前致谢。

【问题讨论】:

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


    【解决方案1】:

    使用xpath的name():

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

    希望对您有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-10-26
      • 1970-01-01
      • 2019-09-22
      • 2012-11-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-18
      相关资源
      最近更新 更多