lxml:获取属性值后的字段

时间:2018-02-07 10:34:35

标签: python xml parsing lxml

我正在解析XML文件,我有一个来自here的后续问题。从以下XML字段:

<enrollment type="Anticipated">30</enrollment>

我想提出预期和数字这个词。 在我拥有的文件中,“注册类型”/“注册”将在文件之间保持稳定,但“预期”不会(例如,有时它会显示“实际”或其他内容)并且数字将不会保持稳定。

我尝试的代码:

from lxml import etree
import sys
import glob
list_to_get = ['enrollment']
list_of_files = glob.glob('*xml')
for each_file in list_of_files:
#    try:
        tree = etree.parse(each_file)
        root = tree.getroot()
        for node in root.xpath("//" + 'enrollment'):
            for e in node.xpath('descendant-or-self::*[not(*)]'):
                if e.attrib:
                        print e.attrib
                        print e.find('type')
                        print e.find('.//type')
                        print e.attrib['type']
                        print e.find(e.attrib['type']).text

使用这种方法,我可以提取类型(例如预期/实际),但我找不到任何方法来提取数字。如果有人知道我应该使用的印刷线,我将不胜感激。

我确实看过一些类似的问题(例如here),但他们的建议对我来说似乎不起作用。

1 个答案:

答案 0 :(得分:2)

你正在做所有正确的事情。只是不复杂。 以简单的方式,使用xpath获取根节点并使用getiterator迭代每个子节点,并且可以使用tag.text

获取每个子节点的值。

例如

parent
    child
    child

for i in parent.getiterator():
    print(i.tag)#will give the first child tag
    print(i.text)#Will give the value