У меня есть вывод, который я могу записать в CSV.Однако из-за того, как я настроил свой XML на текст, выходные данные повторяются неправильно.Я много пробовал исправить свой вывод XML, но я не вижу способа это исправить.
Я много пробовал, в том числе изменил свои выражения XML, пытаясь записать в CSV разныено я не могу заставить строки соответствовать так, как мне нужно, из-за операторов for in различной глубины.
Мне все равно, как это делаетсяДо тех пор, пока они совпадают, потому что данные в конечном итоге поступают в мою базу данных SQL.
Ниже мой код,
import os
import sys
import glob
import xml.etree.ElementTree as ET
firstFile = open("myfile.csv", "a")
firstFile.write("V-ID,")
firstFile.write("HostName,")
firstFile.write("Status,")
firstFile.write("Comments,")
firstFile.write("Finding Details,")
firstFile.write("STIG Name,")
basePath = os.path.dirname(os.path.realpath(__file__))
xmlFile = os.path.join(basePath, "C:\\Users\\myUserName\\Desktop\\Scripts\\Python\\XMLtest.xml")
tree = ET.parse(xmlFile)
root = tree.getroot()
for child in root.findall('{http://checklists.nist.gov/xccdf/1.2}title'):
d = child.text
for child in root:
for children in child.findall('{http://checklists.nist.gov/xccdf/1.2}target'):
b = children.text
for child in root.findall('{http://checklists.nist.gov/xccdf/1.2}Group'):
x = (str(child.attrib))
x = (x.split('_')[6])
a = x[:-2]
firstFile.write("\n" + a + ',')
for child in root:
for children in child:
for childrens in children.findall('{http://checklists.nist.gov/xccdf/1.2}result'):
x = childrens.text
if ('pass' in x):
c = 'Completed'
else:
c = 'Ongoing'
firstFile.write('\t' + '\n' + ',' + b + ',' + c + ',' + ',' + ',' + d)
firstFile.close()
ниже мой токовый выход CSV, ![enter image description here](https://i.stack.imgur.com/BSt6S.png)
ниже нужный мне выход,
![enter image description here](https://i.stack.imgur.com/0lhYz.png)