Changeset 5008 for anuga_core/source/anuga/utilities/xml_tools.py
- Timestamp:
- Feb 7, 2008, 6:28:04 PM (17 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
anuga_core/source/anuga/utilities/xml_tools.py
r4976 r5008 70 70 #---------------------------- 71 71 72 class XML_element :72 class XML_element(dict): 73 73 def __init__(self, tag=None, contents=None): 74 74 """ … … 84 84 85 85 self.elements = contents 86 87 86 self.tag = tag 87 # FIXME: It might be better to represent these objects 88 # in a proper dictionary format with 89 # {tag: elements, ...} 90 88 91 89 92 def __add__(self, other): … … 95 98 def __repr__(self): 96 99 return str(self) 97 98 def __str__(self):99 pass100 100 101 101 def __str__(self, indent=0): … … 114 114 s += '</%s>\n' %self.tag 115 115 return s 116 117 118 def __getitem__(self, key): 119 """Return sub-tree starting at element with tag equal to specified key 120 """ 121 122 #if isinstance(self, XML_element): 123 for node in self.elements: 124 if node.tag == key: 125 return node 126 127 def keys(self): 128 return [str(node.tag) for node in self.elements] 116 129 117 130 … … 138 151 139 152 def __init__(self, contents=None, version='1.0', encoding='iso-8859-1'): 140 tag = '?xml version="%s" encoding="%s" ' %(version, encoding)153 tag = '?xml version="%s" encoding="%s"?' %(version, encoding) 141 154 142 155 XML_element.__init__(self, … … 151 164 for e in self.elements: 152 165 s += str(e) 166 153 167 return s 154 168 … … 180 194 dom = parse(xml) 181 195 182 print 'Res',dom2object(dom)196 return dom2object(dom) 183 197 184 198 185 199 186 200 def dom2object(node): 187 188 if node.nodeType == 3 and len(node.nodeValue.strip()) == 0: 189 return None 190 191 print 'Node name: "%s",' %node.nodeName,\ 192 'Node type: "%s",' %node.nodeType,\ 193 'Node value: "%s",' %str(node.nodeValue).strip(),\ 194 'Node children: %d' %len(node.childNodes) 195 196 197 198 if node.nodeType == 3: 199 contents = node.nodeValue.strip() 200 else: 201 contents = [] 202 for n in node.childNodes: 203 x = dom2object(n) 204 if x is not None: 205 contents.append(x) 201 """Convert DOM representation to XML_object hierarchy. 202 """ 203 204 contents = [] 205 for n in node.childNodes: 206 207 #print 'Node name: "%s",' %n.nodeName,\ 208 # 'Node type: "%s",' %n.nodeType,\ 209 # 'Node value: "%s",' %str(n.nodeValue).strip(),\ 210 # 'Node children: %d' %len(n.childNodes) 211 212 if n.nodeType == 3: 213 # Child is a text element - omit the dom tag #text and 214 # go straight to the text value. 215 216 msg = 'Text element has child nodes - this shouldn\'t happen' 217 assert len(n.childNodes) == 0, msg 218 219 220 x = n.nodeValue.strip() 221 if len(x) == 0: 222 # Skip empty text children 223 continue 224 225 contents = x 226 else: 227 contents.append(dom2object(n)) 228 229 206 230 207 231 208 232 if node.nodeType == 9: 209 # Document 210 X = XML_document() 211 212 X = XML_element(tag=node.nodeName, 213 contents=contents) 233 # Document root 234 X = XML_document(contents=contents) 235 else: 236 # Node 237 X = XML_element(tag=node.nodeName, 238 contents=contents) 239 214 240 return X
Note: See TracChangeset
for help on using the changeset viewer.