我有两个说的XML文件-old.xml和new.xml
old.xml:
<GROUPS>
<GROUP>
<ID>1</ID>
<RESULT>123</RESULT>
</GROUP>
<GROUP>
<ID>2</ID>
<RESULT>999</RESULT>
</GROUP>
</GROUPS>
new.xml:
<GROUPS>
<GROUP>
<ID>2</ID>
<RESULT>015</RESULT>
</GROUP>
<GROUP>
<ID>4</ID>
<RESULT>631</RESULT>
</GROUP>
</GROUPS>
现在,我的目标是解析new.xml的每个GROUP,以及new.xml中是否存在具有相似ID的任何组,然后将其结果从old.xml复制并粘贴到new.xml。
例如,在上面的示例文件中,两个.xml中都有ID = 2,我要复制GROUP.ID = 2的new.xml的999标记。
要求的输出:
<GROUPS>
<GROUP>
<ID>2</ID>
<RESULT>999</RESULT>
</GROUP>
<GROUP>
<ID>4</ID>
<RESULT>631</RESULT>
</GROUP>
</GROUPS>
是否有一些简单的XML工具可以执行此类操作,或者我需要创建脚本吗?还是可以通过XSL实现?我不确定。请指导。
使用Python和BeautifulSoup
模块的另一种解决方案:
xml1 = '''<GROUPS>
<GROUP>
<ID>1</ID>
<RESULT>123</RESULT>
</GROUP>
<GROUP>
<ID>2</ID>
<RESULT>999</RESULT>
</GROUP>
</GROUPS>'''
xml2 = '''<GROUPS>
<GROUP>
<ID>2</ID>
<RESULT>015</RESULT>
</GROUP>
<GROUP>
<ID>4</ID>
<RESULT>631</RESULT>
</GROUP>
</GROUPS>'''
from bs4 import BeautifulSoup
soup1 = BeautifulSoup(xml1, 'xml')
soup2 = BeautifulSoup(xml2, 'xml')
groups_2 = {g.ID.get_text(strip=True): g for g in soup2.select('GROUP:has(> ID)')}
for g in soup1.select('GROUP:has(> ID)'):
i = g.ID.get_text(strip=True)
if i in groups_2:
groups_2[i].replace_with(g)
print(soup2)
印刷品:
<?xml version="1.0" encoding="utf-8"?>
<GROUPS>
<GROUP>
<ID>2</ID>
<RESULT>999</RESULT>
</GROUP>
<GROUP>
<ID>4</ID>
<RESULT>631</RESULT>
</GROUP>
</GROUPS>
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句