forked from OGRECave/ogre
-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathxmlout.py
75 lines (57 loc) · 1.5 KB
/
xmlout.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
# extremely simple XML writer
#
# This is to remove libxml2 dependency on platforms where it's
# difficult to build
#
# 2003 Attila Tajti <attis@spacehawks.hu>
class XMLDoc:
def __init__(self, version):
self.version = version
self.root_element = None
def saveFile(self, filename):
f = file(filename, "w")
f.write('<?xml version="' + self.version + '"?>\n')
self.root_element._write(f, 0)
def saveFormatFile(self, filename, fmt):
self.saveFile(filename)
def freeDoc(self):
pass
class XMLNode:
def __init__(self, name):
self.name = name
self.props = []
self.children = []
self.content = None
def docSetRootElement(self, doc):
doc.root_element = self
def newChild(self, namespace, name, content):
if namespace:
fullname = namespace + ':' + name
else:
fullname = name
child = XMLNode(fullname)
child.content = content
self.children.append(child)
return child
def setProp(self, name, value):
self.props.append((name, value))
def _write(self, f, indent):
#istr = " " * indent
istr = "\t" * indent
# put together our tag
tag = self.name
for prop in self.props:
name, value = prop
tag += ' ' + name + '="' + value + '"'
# print tag, or children between tags
if self.children:
f.write(istr + '<%s>\n' % tag)
for child in self.children:
child._write(f, indent + 1)
f.write(istr + '</%s>\n' % self.name)
else:
f.write(istr + '<%s/>\n' % tag)
def newDoc(version):
return XMLDoc(version)
def newNode(name):
return XMLNode(name)