使用python读取多个目录下的所有XML文件

时间:2016-06-18 18:44:27

标签: python xml beautifulsoup lxml elementtree

我通过Jupyter笔记本使用Pandas。我有10个XML文件存储在多个位置。 例如:

./A/1.xml
./A/2.xml
./A/3.xml
./B/4.xml
./B/5.xml
./B/6.xml

如何加载所有这些文件,以便我可以在每个文件中提取三个特定元素,例如id,name和hypothesis?

我在问题的加载方面需要帮助。如果我对每个文件执行以下操作,那么上面使用的路径是可行的:

from lxml import etree
ltree = etree.parse("./100/A/1.xml")

我更喜欢使用BeautifulSoup的解决方案,但lxml或ElementTree也很好。

XML文档的结构是:

<?xml version="1.0" encoding="UTF-8"?>
<pub-ref>
<doc-id>
<country>US</country>
<doc-num>05040672</doc-num>
<date>20090219</date>
</doc-id>
</pub-ref>
<app-ref>
<doc-id>
<country>US</country>
<doc-num>111324</doc-num>
<date>20100919</date>
</doc-id>
</app-ref> 

1 个答案:

答案 0 :(得分:1)

使用glob获取与您的模式匹配的所有文件的列表:

import glob
import os
from lxml import etree

dir = '/path/to/the/parent/directory/'
for file in glob.iglob(os.path.join(dir, '*/*.xml')):
   with open(file) as f:
      data = etree.parse(f)