xml2csv,包含Python中的xml属性和值

时间:2018-01-06 12:25:25

标签: python xml csv parsing converter

如何将具有复杂结构的大型xml(500M)转换为csv?

示例XML:

<images>
<image ismain="1" sml="1" med="1" big="0"><id>2</id><title><![CDATA[]]></title><url>www.mysite.com/45656.jpeg</url></image>
<image ismain="1" sml="1" med="0" big="1"><id>2</id><title><![CDATA[]]></title><url>www.mysite.com/354456.jpeg</url></image>
</images>

Code Python:

from xmlutils.xml2csv import xml2csv
converter = xml2csv("/home/mehul/Downloads/instant/static/images.xml", "/home/mehul/Downloads/instant/static/images.csv", encoding="utf-8")
converter.convert(tag="image")

实际输出:

id,title,url
2,,www.mysite.com/45656.jpeg
2,,www.mysite.com/354456.jpeg

预期产出:

id,ismain sml med big,title,url
2,,,,,www.mysite.com/45656.jpeg
2,,,,,www.mysite.com/354456.jpeg

1 个答案:

答案 0 :(得分:0)

就我使用xmlutils而言,它不适用于复杂结构,例如带有嵌套标签的XML。此外,您也想要所有属性。

我曾在公司项目中处理过这个问题,基本上我必须编写自己的解析代码。

您可以使用Python的内置xml库来解析XML,并检查startend标记等事件,然后提取数据。

事实上,如果您的所有标记名称都在lowercase中,则可以使用Python的HTMLParser。它具有预定义的函数,用于处理您可以覆盖的事件。但是它会将标记名称转换为小写(如果它们最初是大写的)。