Getting the right formatting for my XML data
Question:
I am wondering why I’m not getting the right XML format when I’m writing my XML answer into a file.
Basically what I’m doing is sending a post request and receiving XML data back, doing something like this:
post_request = s.post('myurl')
soup2 = BeautifulSoup(post_request.text, features='xml')
print(soup2.encode('utf-8'))
f=open("exit.xml","w")
f.write(str(soup2.encode('utf-8')))
f.close
First part does the work correctly but when I write it in my exit.xml
all the data appears in the wrong format. What I mean by that is that everything is following, there is no indentation. Instead of going to the next line, there is n
between the data. I’m getting something like that:
<part number="1976">n<name>Windscreen Wiper</name>n<description>The Windscreen wiper automatically removes rain from your windscreen, if it should happen to splash there. It has a rubbern <ref part="1977">blade</ref>n which can be ordered separately if you need to replace it </description>n </part>n
Any ideas on how to fix?
Answers:
Try to add b
flag when you open your file for writing. Also, remove the str(...)
:
with open('exit.xml', 'wb') as f_out: # <-- add 'b' flag (binary)
f_out.write(soup2.encode('utf-8'))
I am wondering why I’m not getting the right XML format when I’m writing my XML answer into a file.
Basically what I’m doing is sending a post request and receiving XML data back, doing something like this:
post_request = s.post('myurl')
soup2 = BeautifulSoup(post_request.text, features='xml')
print(soup2.encode('utf-8'))
f=open("exit.xml","w")
f.write(str(soup2.encode('utf-8')))
f.close
First part does the work correctly but when I write it in my exit.xml
all the data appears in the wrong format. What I mean by that is that everything is following, there is no indentation. Instead of going to the next line, there is n
between the data. I’m getting something like that:
<part number="1976">n<name>Windscreen Wiper</name>n<description>The Windscreen wiper automatically removes rain from your windscreen, if it should happen to splash there. It has a rubbern <ref part="1977">blade</ref>n which can be ordered separately if you need to replace it </description>n </part>n
Any ideas on how to fix?
Try to add b
flag when you open your file for writing. Also, remove the str(...)
:
with open('exit.xml', 'wb') as f_out: # <-- add 'b' flag (binary)
f_out.write(soup2.encode('utf-8'))