This is a pre-production deployment of Warehouse, however changes made here WILL affect the production instance of PyPI.
Latest Version Dependencies status unknown Test status unknown Test coverage unknown
Project Description

ttr.xml.csv2xml module contains:

class Csv2Xml
Converter of CSV lines into xml elements or string
function string2xml
utility function to convert string into xml string in one shot.


  • read CSV into XML document

  • get headers from CSV and use them as element names

  • managing CSV format

    • define CSV format as would csv module
      • using Dialect (subclass, registered one)
      • using fmtparams
      • combination (fmtparam override Dialect)
  • on resulting xml define:

    • name of root tag
    • name of row element
    • optional use and name of attribute in row element, showing line number
  • iterator over csv / xml rows

  • simple function string2xml including encoding


Python must be installed, version 2.6 is expected. You shall have access to Internet to installa additional packages automatically from PyPi (lxml at this moment) This package is not on PyPi yet (planned). Use of distribution package itself is needed at the moment and andy of following tools shall work

Using unpack the package and run::
python install
Using easy_install::
easy_install <package_file>
Using pip::
pip install <package_file>
On windows, using binary setup.exe::
simply run the installation program.

CSV string into XML string

Simple case could be:
>>> from ttr.xml.csv2xml import string2xml
>>> csv_str = """a;b;c
... 1;2;3
... 11;22;33
... 111;222;333"""
>>> print string2xml(csv_str, delimiter = ";")
If you like to specify output encoding (default is UTF-8), tell it by encoding parameter
>>> print string2xml(csv_str, delimiter = ";", encoding = "windows-1250")
<?xml version='1.0' encoding='windows-1250'?>
The CSV format can be set also by registered dialects, adding also line numbering attribute
>>> excel_str = """a,b,c
... 1,2,3
... 11,22,33
... 111,222,333"""
>>> print string2xml(excel_str, dialect = "excel", row_num_att = "rownum")
<root><row rownum="1"><a>1</a><b>2</b><c>3</c></row><row rownum="2"><a>11</a><b>22</b><c>33</c></row><row rownum="3"><a>111</a><b>222</b><c>333</c></row></root>
Or you can define your own dialect using csv.Dialect subclass
>>> import csv
>>> class DialectSemicolon(csv.Dialect):
...  delimiter = ';'
...  quotechar = '"'
...  doublequote = True
...  skipinitialspace = False
...  lineterminator = '\r\n'
...  quoting = csv.QUOTE_NONE
>>> print string2xml(csv_str, dialect = DialectSemicolon)

File object into XML string

Csv2Xml provides only one type of source - file like object. It can be created by opening a file in style: f = open(“my.csv”, “b”) or by using string buffers:

>>> from StringIO import StringIO
>>> buff = StringIO(csv_str)
>>> print buff # doctest:+ELLIPSIS
<StringIO.StringIO ...>
>>> from ttr.xml.csv2xml import Csv2Xml
>>> csv_convertor = Csv2Xml(buff, delimiter = ";") # doctest:+ELLIPSIS
>>> print csv_convertor.as_string()

This way you can easily manage conversion of files without any need to read them in advance into a string. You can specify CSV file format using the same methods as with string2xml function.

>>> buff2 = StringIO(excel_str)
>>> csv_convertor = Csv2Xml(buff2, dialect = "excel")
>>> print  csv_convertor.as_string()

Reading CSV into XML elements

Instead of using string for storing resulting XML, more nataral is to get is as XML element You then get root element with all the row - related elements being nested inside The only difference is you call as_element method now:

>>> buff2 = StringIO(excel_str) # doctest: +ELLIPSIS
>>> csv_convertor = Csv2Xml(buff2, dialect = "excel")
>>> xml_elm = csv_convertor.as_element()
>>> print xml_elm # doctest: +ELLIPSIS
<Element root ...>
>>> from lxml import etree
>>> etree.tostring(xml_elm)

Iterating over CSV file lines

Csv2Xml converter can function also as an iterator - in such a case it will not return root element, but only the row elements.

>>> buff = StringIO(excel_str)
>>> csv_converter = Csv2Xml(buff, dialect = "excel")
>>> for xml_row in csv_converter:
...    print etree.tostring(xml_row)


0.1.2dev —

Release date: 2011-08-12

  • Initial version
  • removed dependency on lxml, using Python ElementTree
Release History

Release History


This version

History Node

TODO: Figure out how to actually get changelog content.

Changelog content for this version goes here.

Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Show More

Download Files

Download Files

TODO: Brief introduction on what you do with files - including link to relevant help section.

File Name & Checksum SHA256 Checksum Help Version File Type Upload Date
ttr.xml.csv2xml-0.1.2dev002-py2.6.egg (14.7 kB) Copy SHA256 Checksum SHA256 2.6 Egg Aug 12, 2011
ttr.xml.csv2xml-0.1.2dev002.win32.exe (211.4 kB) Copy SHA256 Checksum SHA256 any Windows Installer Aug 12, 2011 (12.2 kB) Copy SHA256 Checksum SHA256 Source Aug 12, 2011

Supported By

WebFaction WebFaction Technical Writing Elastic Elastic Search Pingdom Pingdom Monitoring Dyn Dyn DNS Sentry Sentry Error Logging CloudAMQP CloudAMQP RabbitMQ Heroku Heroku PaaS Kabu Creative Kabu Creative UX & Design Fastly Fastly CDN DigiCert DigiCert EV Certificate Rackspace Rackspace Cloud Servers DreamHost DreamHost Log Hosting