我正在解析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),但他们的建议对我来说似乎不起作用。
答案 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