按标签内容对XML文件进行排序

时间:2014-02-14 09:42:38

标签: python xml xml-parsing

我有很多XML文件没有排序。我想通过名为" title"的标签内容对它们进行排序。我知道标题的顺序: 1.)社论 2.)内容 3.)俱乐部 等等 每个文件都有另一个"标题" -content。

文件编号1的XML结构如下所示:

<article>
<someTags>
</someTags>
<title>editorial</title>
</article>

如何浏览所有文件并按定义的顺序对其进行排序? 文件名可以如下所示:&#34; sorted_01.xml&#34;,&#34; sorted_02.xml&#34;等等。 我怎么能得到这个? 非常感谢您的帮助! :)

2 个答案:

答案 0 :(得分:1)

sortsorted与返回title标记文本的函数一起用作关键函数。

import glob
import xml.etree.ElementTree as ET

def get_title(filepath):
    tree = ET.parse(filepath)
    return tree.find('.//title').text
    # Find `title` element and return the text of the element.

filepaths = glob.glob('*.xml')
print(sorted(filepaths, key=get_title))

请参阅demo

答案 1 :(得分:1)

另一种方法(未经测试)

import glob, os
from lxml import etree
d = {}
titles = ['editorial', 'content' , 'club', ...] # ordered titles
for fname in glob.glob('*.xml'):
     tree = etree.parse(fname)
     title = tree.xpath('//title/text()')[0]
     subtitle = tree.xpath('//subtitle/text()')[0]
     key = '%s_%s' % (title, subtitle)
     d[key] = fname
for idx,title in enumerate(titles, 1):
     os.rename(d[title], 'sorted_%02d.xml' % idx)