~roeldeconinck/mnemosyne-proj/SMImporter

« back to all changes in this revision

Viewing changes to mnemosyne/mnemosyne/libmnemosyne/file_formats/XMLThings.py

  • Committer: Roel De Coninck
  • Date: 2012-02-07 21:24:27 UTC
  • Revision ID: roeldeconinck@gmail.com-20120207212427-mthe8dbh5h76yj0w
First commit with test files and basic xml functions

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
# -*- coding: utf-8 -*-
 
2
"""
 
3
Created on Wed Aug 31 22:48:09 2011
 
4
 
 
5
@author: RDC
 
6
"""
 
7
 
 
8
import xml.etree.cElementTree as ElementTree
 
9
from xml.etree import ElementTree as OldElementTree
 
10
 
 
11
tree=ElementTree.parse(r'C:\Workspace\Mnemosyne\trunk\import\mnemosyne\tests\files\VeryShort.xml')
 
12
#tree=ElementTree.parse(r'C:\Workspace\Mnemosyne\trunk\import\mnemosyne\tests\files\Shortestt.xml')
 
13
 
 
14
root = tree.getroot()
 
15
 
 
16
def show_element(el, maximum=20):
 
17
    """show all tags and corresponding texts of an element
 
18
    
 
19
    maximum specifies the max number of tags to be showed (default 20)
 
20
    """
 
21
 
 
22
    length = len(el)
 
23
    for element in list(el)[:min(length, 20)]:
 
24
        # show subelements
 
25
        print 'tag = %s, text = %s' %(element.tag, element.text)
 
26
    if len(el.items()) > 0:
 
27
        # There are items too
 
28
        print 'The items are', el.items()
 
29
    print '\n'     
 
30
 
 
31
def split(el, topics=[], items=[]):
 
32
    """Split an element in a list with topics and a list with items"""
 
33
    
 
34
    if el.findtext('Type') == 'Topic':
 
35
        # Element is a Topic
 
36
        topics.append(el)
 
37
        # check for all subelements
 
38
        for e in list(el):
 
39
            split(e, topics, items)
 
40
            
 
41
    elif el.findtext('Type') == 'Item':
 
42
        items.append(el)
 
43
     
 
44
    # no else condition required: the loop will continue 
 
45
 
 
46
    return topics, items
 
47
    
 
48
 
 
49
selements = list(tree.getiterator(tag='SuperMemoElement'))
 
50
for e in selements:
 
51
    show_element(e)
 
52
    
 
53
s=tree.find('SuperMemoElement')
 
54
split(s)
 
55