source: anuga_core/source/anuga/utilities/xml_tools.py @ 4963

Last change on this file since 4963 was 4963, checked in by ole, 16 years ago

Work on IP tracking:
Checksums, removed DOCTYPE for the time being, formatted, and more checks

File size: 1.4 KB
Line 
1"""Basic XML utilities based on minidom - the built in Document Object Model
2"""
3
4import sys
5from xml.dom import minidom, Node
6#from xml.sax import make_parser, parse as validate, handler
7
8def print_tree(n, indent=0):
9    while n:
10        #print 'nodeType', n.nodeType, Node.ELEMENT_NODE
11        #if n.nodeType != Node.ELEMENT_NODE:
12        #    break
13
14        print ' '*indent,\
15              'Node name: "%s",' %n.nodeName,\
16              'Node type: "%s",' %n.nodeType,\
17              'Node value: "%s"' %str(n.nodeValue).strip()
18             
19       
20        print_tree(n.firstChild, indent+4)
21        n = n.nextSibling
22
23
24def pretty_print_tree(n, indent=0):
25    print n
26
27def parse(fid):
28    """Parse XML file descriptor and return DOM object.
29    """
30
31    # FIXME (OLE): XML code should be validated against the DTD
32    #validate(fid, handler)
33    #doc = minidom.parse(fid, make_parser())
34
35    fid.seek(0)
36    doc = minidom.parse(fid)   
37    return doc
38
39
40def get_elements(nodelist):
41    """Return list of nodes that are ELEMENT_NODE
42    """
43
44    element_list = []
45    for node in nodelist:
46        if node.nodeType == Node.ELEMENT_NODE:
47            element_list.append(node)
48
49    return element_list
50
51
52def get_text(nodelist):
53    """Return a concatenation of text fields from list of nodes
54    """
55
56    s = ''
57    for node in nodelist:
58        if node.nodeType == Node.TEXT_NODE:
59            s += node.nodeValue + ', '
60
61    if len(s)>0: s = s[:-2]
62    return s
Note: See TracBrowser for help on using the repository browser.