我希望将xml展平为csv,对于每个嵌套的子项,我想复制直接子项的值,这两个子项具有相同的标记名。这是示例xml。对于“ claim”标签内的每个“ entry”值,我想为“ Insurer”的直接子项打印所有值。我确实尝试过findall,但它也检索了“ claim”下的“ entry”的值。
注意:我正在使用ElementTree进行解析
$sql = "DELETE FROM `".$config_databaseTablePrefix."table2` WHERE id = ?";
database_preparedModify($sql,'s',$insertId, $feed["id"]);
<Parent>
<Branch>
<Insurer>
<claim>
<entry>1</entry>
<entry>2</entry>
</claim>
<entry>outer</entry>
<entry>outer1</entry>
<entry>outer2</entry>
</Insurer>
</Branch>
</Parent>
预期结果:
Entry= child.findall('.//{http://trying.nz}entry')
答案 0 :(得分:0)
您没有提到正在使用的xml解析库,但这是基于ElementTree的工作代码示例。
它确实使用find
函数对XML数据的结构进行了假设,该函数仅深入一层。
#!/usr/bin/env python3
import xml.etree.ElementTree as ET
from csv import writer as csvwriter
from itertools import product
tree = ET.parse("input.xml")
claims = [
entry.text
for entry in tree.find("Branch")
.find("Insurer")
.find("claim")
.findall("entry")
]
insurers = [
entry.text
for entry in tree.find("Branch").find("Insurer").findall("entry")
]
with open("output.csv", "w") as csvfile:
outputwriter = csvwriter(csvfile)
outputwriter.writerow(("entry_from_claim", "entry_from_Insurer"))
outputwriter.writerows(product(claims, insurers))
希望这会有所帮助!