I am reading an xml file, adding some tags and writing it.
The file i read have
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
my output only has
<?xml version="1.0" ?>
I use the following Code
import os
from xml.dom import minidom
import xml.etree.ElementTree as ET
tree = ET.parse(xml_file)
root = tree.getroot()
access = ""
# ... (rest of the processing logic)
# Write to a temporary string to control indentation
rough_string = ET.tostring(root, 'utf-8')
reparsed = minidom.parseString(rough_string)
# Write the formatted XML to the original file without empty lines and version information
with open(xml_file, 'w', encoding='utf-8') as f:
for line in reparsed.toprettyxml(indent=" ").splitlines():
if line.strip():
f.write(line + '\n')
How can i preserve the XML declaration from my original document?
Edit:
I solved it by manually adding the line
with open(xml_file, 'w', encoding='utf-8') as f:
custom_line = '<?xml version="1.0" encoding="UTF-8" standalone="yes"?>'
f.write(custom_line + '\n')
for line in reparsed.toprettyxml(indent=" ").splitlines():
if line.strip() and not line.startswith('<?xml'):
f.write(line + '\n')