当前位置:  开发笔记 > 编程语言 > 正文

获取Python中的XML属性值列表

如何解决《获取Python中的XML属性值列表》经验,为你挑选了2个好方法。

我需要从Python中的子元素中获取属性值列表.

用一个例子来解释是最容易的.

给出一些像这样的XML:


    
        
        
        
    
    
        
        
        
    

我希望能够做到这样的事情:

>>> getValues("CategoryA")
['a1', 'a2', 'a3']
>>> getValues("CategoryB")
['b1', 'b2', 'b3']

它看起来像XPath的工作,但我对所有建议持开放态度.我也想听听你最喜欢的Python XML库.



1> Jesse Millik..:

我不是Python的老手,但这是使用libxml2的XPath解决方案.

import libxml2

DOC = """
    
        
        
        
    
    
        
        
        
    
"""

doc = libxml2.parseDoc(DOC)

def getValues(cat):
    return [attr.content for attr in doc.xpathEval("/elements/parent[@name='%s']/child/@value" % (cat))]

print getValues("CategoryA")

结果......

['a1', 'a2', 'a3']



2> dF...:

ElementTree 1.3(遗憾的是不是1.2包含在Python中的那个)支持XPath,如下所示:

import elementtree.ElementTree as xml

def getValues(tree, category):
    parent = tree.find(".//parent[@name='%s']" % category)
    return [child.get('value') for child in parent]

那你可以做

>>> tree = xml.parse('data.xml')
>>> getValues(tree, 'CategoryA')
['a1', 'a2', 'a3']
>>> getValues(tree, 'CategoryB')
['b1', 'b2', 'b3']

lxml.etree (也提供ElementTree接口)也将以相同的方式工作.

推荐阅读
mobiledu2402851373
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有