# -*- coding: utf-8 -*- """ This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, see . @author: mkaay """ from __future__ import with_statement from PyQt4.QtCore import * from PyQt4.QtGui import * from PyQt4.QtXml import * import os class XMLParser(): def __init__(self, data, dfile=""): self.mutex = QMutex() self.mutex.lock() self.xml = QDomDocument() self.file = data self.dfile = dfile self.mutex.unlock() self.loadData() self.root = self.xml.documentElement() def loadData(self): self.mutex.lock() f = self.file if not os.path.exists(f): f = self.dfile with open(f, 'r') as fh: content = fh.read() self.xml.setContent(content) self.mutex.unlock() def saveData(self): self.mutex.lock() content = self.xml.toString() with open(self.file, 'w') as fh: fh.write(content) self.mutex.unlock() return content def parseNode(self, node, ret_type="list"): if ret_type == "dict": childNodes = {} else: childNodes = [] child = node.firstChild() while True: n = child.toElement() if n.isNull(): break else: if ret_type == "dict": childNodes[str(n.tagName())] = n else: childNodes.append(n) child = child.nextSibling() return childNodes