Code

#!/usr/bin/env python2
# -*- coding: utf-8 -*-

import os
import xml.etree.ElementTree
import io


def getKey(item):
    return int(item[0])

def doit(file):
    root = xml.etree.ElementTree.parse(file).getroot()

    old_string = "file://localhost/Users/USERNAME/Music/iTunes/iTunes%20Media/"
    new_string = "file:///home/USERNAME/Music/"

    data = []
    for dict in root:
        for dictchild in dict:
            if dictchild.tag == 'dict':
                for track in dictchild:
                    if track.tag == "key":
                        data.append([track.text])
                    if track.tag == 'dict':
                        switch = False
                        for entry in track:
                            if switch:
                                switch = False
                                data[-1].append(entry.text.replace(old_string,
                                                new_string))
                            if entry.text in ["Name", "Location"]:
                                switch = True

    f = io.open('../result/' + file.strip('.xml') + '.pls', 'w',
                encoding='utf8')
    f.write('[playlist]\nX-GNOME-Title=' + unicode(file.strip('.xml')) +
            '\nNumberOfEntries=' + unicode(len(data)) + '\n')

    for nr, track in enumerate(sorted(data, key=getKey)):
        nr = nr + 1
        f.write('File' + unicode(nr) + '=' + unicode(track[2]) + '\n')
        print track[1], track[2]
        f.write('Title' + unicode(nr) + '=' + unicode(track[1]) + '\n')

    f.close()


if __name__ == "__main__":
    for filename in os.listdir('.'):
        print "next list", filename
        doit(filename)

Note

This script cannot handle all characters in playlist-filenames. 'ä', 'ö', 'ü', 'é', 'è', 'ç' and some others will break the script.
After importing the resulting *.pls-files, you are able to include those characters again in Rhythmbox.