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

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

IP tracking work

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 parse(fid):
25    """Parse XML file descriptor and return DOM object.
26    """
27
28    # FIXME (OLE): XML code should be validated against the DTD
29    #validate(fid, handler)
30    #doc = minidom.parse(fid, make_parser())
31
32    doc = minidom.parse(fid)   
33    return doc
34
35
36def get_elements(nodelist):
37    """Return list of nodes that are ELEMENT_NODE
38    """
39
40    element_list = []
41    for node in nodelist:
42        if node.nodeType == Node.ELEMENT_NODE:
43            element_list.append(node)
44
45    return element_list
46
47
48def get_text(nodelist):
49    """Return a concatenation of text fields from list of nodes
50    """
51
52    s = ''
53    for node in nodelist:
54        if node.nodeType == Node.TEXT_NODE:
55            s += node.nodeValue + ', '
56
57    if len(s)>0: s = s[:-2]
58    return s
Note: See TracBrowser for help on using the repository browser.