gpt4 book ai didi

python - 在给定标签处将 XML 文件拆分为多个

转载 作者:数据小太阳 更新时间:2023-10-29 02:48:55 25 4
gpt4 key购买 nike

我想将一个 XML 文件拆分成多个文件。我的工作站仅限于使用 Xalan 2.7.1 的 Eclipse Mars。

我也可以使用 Python,但以前从未使用过。

<?xml version="1.0" encoding="UTF-8"?>
<root>
<row>
<NAME>Doe</NAME>
<FIRSTNAME>Jon</FIRSTNAME>
<GENDER>M</GENDER>
</row>
<row>
<NAME>Mustermann</NAME>
<FIRSTNAME>Max</FIRSTNAME>
<GENDER>M</GENDER>
</row>
</root>

我怎样才能把它们变成这样

<?xml version="1.0" encoding="UTF-8"?>
<root>
<row>
<NAME>Doe</NAME>
<FIRSTNAME>Jon</FIRSTNAME>
<GENDER>M</GENDER>
</row>
</root>

我需要每个“行”-数据在一个带有标题的文件中。上面的数据只是一个例子。大多数“行”数据有 16 个属性,但它会随着时间的推移而变化。

最佳答案

使用 Python 元素树。

创建一个文件,例如xmlsplitter.py。添加以下代码(其中 file.xml 是您的 xml 文件并假设每一行都有一个唯一的 NAME 元素。)。

import xml.etree.ElementTree as ET
context = ET.iterparse('file.xml', events=('end', ))
for event, elem in context:
if elem.tag == 'row':
title = elem.find('NAME').text
filename = format(title + ".xml")
with open(filename, 'wb') as f:
f.write("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n")
f.write(ET.tostring(elem))

运行它

python xmlsplitter.py

或者如果名称不唯一:

import xml.etree.ElementTree as ET
context = ET.iterparse('file.xml', events=('end', ))
index = 0
for event, elem in context:
if elem.tag == 'row':
index += 1
filename = format(str(index) + ".xml")
with open(filename, 'wb') as f:
f.write("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n")
f.write(ET.tostring(elem))

关于python - 在给定标签处将 XML 文件拆分为多个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36155049/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com