У меня есть следующий код, который принимает CSV и записывает файл xml:
import csv
import sys
import os
from lxml import etree
def main():
csvFile = 'pol_renew_detail.csv'
xmlFile = open('pol_renew_detail.xml','wb')
csvData = csv.reader(open(csvFile))
header = next(csvData)
counter = 0
root = etree.Element('root')
for row in csvData:
policy = etree.SubElement(root,'policy')
for index in range(0,len(header)):
child = etree.SubElement(policy,header[index])
child.text = row[index]
policy.append(child)
result = etree.tostring(root,pretty_print=True,encoding='utf-8')
#print(result)
xmlFile.write(result)
print('Done')
if __name__ == '__main__':
main()
Файл CSV имеет 3 столбца следующим образом:
Выходной файл xml создается следующим образом:
<root>
<policy>
<PolicyNumber>78014R01</PolicyNumber>
<EffectiveDate>20190919</EffectiveDate>
<AttributeFlag>Account</AttributeFlag>
</policy>
<policy>
<PolicyNumber>44900A03</PolicyNumber>
<EffectiveDate>20190801</EffectiveDate>
<AttributeFlag>Account</AttributeFlag>
</policy>
<policy>
<PolicyNumber>81566A01</PolicyNumber>
<EffectiveDate>20190228</EffectiveDate>
<AttributeFlag>Account</AttributeFlag>
</policy>
<policy>
.
.
.
</root>
Когда я открываю этот файл xml в Notepad ++, я замечаю, что форматирование первого тега ' PolicyNumber 'отличается от других тегов. Когда я пытаюсь использовать этот xml для других процессов, я получаю ошибку форматирования файла. Что я делаю неправильно только для первого тега в этом xml файле?