I have a large xml file like below structure
<?xml version="1.0"?>
<products xmlns="http://data-vocabulary.org/product/">
<channel>
<title>Online Store</title>
<link>https://www.clienturl.com/</link>
<product>
<identifier>DI035AT12JNR</identifier>
<quantity>1</quantity>
<fn>Button Fastening Mid Rise Boyfriend Jeans</fn>
<description>Button Fastening Mid Rise Boyfriend Jeans</description>
<category>women-clothing > women-clothing-jeans > women-clothing-jeans-straight_jeans</category>
<currency>SAR</currency>
<photo>http://clienturl/product/78/6014/v1/1-zoom.jpg</photo>
<brand>Diesel</brand>
<url>https://eclient-product-url.html</url>
<price>1450</price>
<google_product_category>Apparel & Accessories > Clothing > Pants</google_product_category>
</product>
<product>
<identifier>DI035AT12JNR</identifier>
<quantity>1</quantity>
<fn>Button Fastening Mid Rise Boyfriend Jeans</fn>
<description>Button Fastening Mid Rise Boyfriend Jeans</description>
<category>women-clothing > women-clothing-jeans > women-clothing-jeans-straight_jeans</category>
<currency>SAR</currency>
<photo>http://clienturl/product/78/6014/v1/1-zoom.jpg</photo>
<brand>Diesel</brand>
<url>https://eclient-product-url.html</url>
<price>1450</price>
<google_product_category>Apparel & Accessories > Clothing > Pants</google_product_category>
</product>
</channel>
</products>
and here is the python code below
import codecs
import xml.etree.ElementTree as etree
xmlfile = 'en-sa.xml'
def iterate_xml(xmlfile):
doc = etree.iterparse(xmlfile, events=('start', 'end'))
_, root = next(doc)
start_tag = None
for event, element in doc:
if event == 'start' and start_tag is None:
start_tag = element.tag
if event == 'end' and element.tag == start_tag:
yield element
start_tag = None
root.clear()
count=0
for element in iterate_xml(xmlfile):
for ele in element:
print ele
count=count+1
if count == 5:
break
which print output like below
<Element '{http://data-vocabulary.org/product/}title' at 0x7efd046f7a10>
<Element '{http://data-vocabulary.org/product/}link' at 0x7efd046f7ad0>
<Element '{http://data-vocabulary.org/product/}product' at 0x7efd046f7d10>
<Element '{http://data-vocabulary.org/product/}product' at 0x7efd04703050>
I want make this xml into csv file like having below cloumns headers
identifier:quantity:fn:description:category:currency:photo:brand:url:price:google_product_category
but didn't get any ideas how to proceed, can someone help me here \ Thanks in advance
yield elementtoyield {element.tag:element.text}