Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: downloads/Tools/Wings3DExporter/xmlout.py @ 7

Last change on this file since 7 was 6, checked in by anonymous, 17 years ago

=…

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