【Python杂记】合并多个 xml 文件
1. 假设需要对以下 3 个文件进行合并
file1.xml
<!-- file1.xml --> |
file2.xml
<!-- file2.xml --> |
file3.xml
<!-- file3.xml --> |
2. 合并输出的预计结果保存在 output.xml 中
- 合并条件是满足
{'id': '1','value':'a'}
的所有元素
<!-- output.xml --> |
3. 合并方式一(根节点简单的情况)
- 合并的方法如
merge_xml_files_root
所示
def merge_xml_files_root(xml_files,root_data,item,attribs, output_file): |
if __name__ == '__main__': |
4. 合并方式二(根节点未知)
- 合并的方法如
merge_xml_files
所示
def merge_xml_files(xml_files,item,attribs, output_file): |
- 可通过以下方式调用
if __name__ == '__main__': |
5. 其他使用方式
- 如果传入的
attribs = {'id': '1'}
,将会得到满足该条件的结果,如下:
<!-- output.xml --> |
6. 扩充部分
- 合并方式二使用
any()
函数进行结点删除,此外还有all()
函数。any()
和all()
都是 Python 内置函数。any()
函数用于判断给定的可迭代参数iterable
是否全部为False
,则返回False
,如果有一个为True
,则返回True
。元素除了是 0、空、FALSE 外都算 TRUE。
6.1 any()
函数
any()
函数接受一个可迭代对象作为参数,如果可迭代对象中的任意一个元素为真值,则返回True
,否则返回False
。例如:
print(any([False, False, True])) # 输出 True |
- 文中使用的
if any(elem.attrib.get(key)!=value for key, value in attribs.items() |
- 等价于
if elem.attrib.get('id')!='1' or elem.attrib.get('value')!='a' |
6.2 all()
函数
all()
函数也接受一个可迭代对象作为参数,如果可迭代对象中的所有元素都为真值,则返回True
,否则返回False
。例如:
print(all([True, True, True])) # 输出 True |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 泰山!
评论
ValineDisqus