import pprint
import xml.dom.minidom
from xml.dom.minidom import Node

doc = xml.dom.minidom.parse("books5.xml")

mapping = {}

# Vratit vsetky prvky typu "book"
# print doc.getElementsByTagName("book")

# Pre kazdy prvok "book"
for node in doc.getElementsByTagName("book"):
  #urcit hodnotu atributu "isbn"	
  isbn = node.getAttribute("isbn")

  # Zoznam dat ku knihe bude tvorit nazov a autor
  bookdata = []
  
  # vratist vsetky prvky typu "title"
  L = node.getElementsByTagName("title")
  # pre kazdy prvok typu "title"
  for node2 in L:
    title = ""
    #print node2.childNodes
    for node3 in node2.childNodes:
      if node3.nodeType == Node.TEXT_NODE:
        title += node3.data
    bookdata.append(title)

  # vratist vsetky prvky typu "author"
  L = node.getElementsByTagName("author")
  # pre kazdy prvok typu "author"
  for node2 in L:
    author = ""
    #print node2.childNodes
    for node3 in node2.childNodes:
      if node3.nodeType == Node.TEXT_NODE:
        author += node3.data
    bookdata.append(author)

  # vytvorit polozku slovniku
  mapping[isbn] = bookdata

keys = mapping.keys()
#keys.sort()
# vytlacit kluce a polozky slovnika do suboru
sf=open('knihy_DOM.txt','w')
for key in keys:
  s1=mapping[key][1].ljust(25)
  s2=mapping[key][0].ljust(30)
  # parsovane retazce su zakodovane do unicode, preto ich treba previest
  # do cp1250
  line = "%s:  %s\n(ISBN %s)\n"\
     %(s1.encode('cp1250'), s2.encode('cp1250'), key.encode('cp1250'))
  sf.write(line)

sf.close()
