5 import xml.etree.ElementTree as ET
7 #sys.stdout = codecs.getwriter("utf-8")(sys.stdout)
11 def subtree(e, h, n, p, r):
12 tag2 = re.sub(r'^{.*}', '', e.tag)
13 #print '#', h, n, e.tag, e.attrib, '=> "%s"' % tag2
14 print('create (%s:XMLtag { __tag: "%s"' % (n, tag2))
15 for name, value in list(e.attrib.items()):
16 name2 = re.sub(r'^{.*}', '', name)
17 name2 = name2.replace('.', '_') ### attribute name may contain character '.'
18 #print '# "%s" = "%s"' % (name2, value)
19 print(' , %s: "%s"' % (name2, value))
21 print('create (%s)-[:%s]->(%s)' % (p, r, n))
23 if (e.text is not None) and (re.match('\S', e.text)):
24 #print '#', h, "text: '%s'" % e.text
25 print('create (%s:XMLdata { value: "%s" })' % (n + "d", e.text))
26 print('create (%s)-[:XML_Data]->(%s)' % (n, n + "d"))
27 if (e.tail is not None) and (re.match('\S', e.tail)):
28 #print '#', h, "tail: '%s'" % e.tail
29 print('create (%s:XMLdata { value: "%s" })' % (n + "d", e.text))
30 print('create (%s)-[:XML_Data]->(%s)' % (n, n + "d"))
31 for i, s in enumerate(e):
32 subtree(s, h + "[%d]>>> " % i, n + "_%d" % i, n, 'XML_Child')
39 print('create (%s:XMAIL { file: "%s" })' % (xmail_node, fname))
41 tree = ET.parse(fname)
43 subtree(elem, "", top_node, xmail_node, 'XML_Root')
44 print("return id(nx)")