def xInclude (self, elementWrapper, baseUrl, ownerDoc): filePath = elementWrapper.getFilePath() for childElementWrapper in elementWrapper.getChildren(): line = childElementWrapper.getStartLineNumber() if childElementWrapper.getNsName() == (XINC_NAMESPACE, "include"): href = childElementWrapper["href"] parse = childElementWrapper.getAttributeOrDefault ("parse", "xml") encoding = childElementWrapper.getAttribute ("encoding") if self.verbose: print "Xinclude: %s" %href try: if parse == "xml": subTreeWrapper = self.parse (href, baseUrl, ownerDoc) elementWrapper.replaceChildBySubtree (childElementWrapper, subTreeWrapper) elif parse == "text": absUrl = convertToAbsUrl (href, baseUrl) fp = urllib.urlopen (absUrl) data = fp.read() if encoding: data = data.decode(encoding) newTextNode = ownerDoc.xmlIfExtCreateTextNode(data) elementWrapper.element.element.insertBefore (newTextNode, childElementWrapper.element.element) elementWrapper.removeChild (childElementWrapper) fp.close() else: raise GenXmlIfError, "%s: line %s: XIncludeError: Invalid 'parse' Attribut: '%s'" %(filePath, line, parse) except IOError, errInst: raise GenXmlIfError, "%s: line %s: IOError: %s" %(filePath, line, str(errInst)) elif childElementWrapper.getNsName() == (XINC_NAMESPACE, "fallback"): raise GenXmlIfError, "%s: line %s: XIncludeError: xi:fallback tag must be child of xi:include" %(filePath, line)
def loader(self, href, parse, encoding=None): if parse == "xml": data = self.parser(href, self.baseUrl, self.ownerDoc).getTree().getroot() else: absUrl = convertToAbsUrl (href, self.baseUrl) fp = urllib.urlopen (absUrl) data = fp.read() if encoding: data = data.decode(encoding) fp.close() return data
def __getBaseUrl (self, elementWrapper): """Retrieve base URL for the given element node. Input parameter: elementWrapper: wrapper of current element node """ nsNameBaseAttr = NsNameTupleFactory ((XML_NAMESPACE, "base")) if elementWrapper.hasAttribute(nsNameBaseAttr): return convertToAbsUrl (elementWrapper.getAttribute(nsNameBaseAttr), self.baseUrlStack[0]) else: return self.baseUrlStack[0]
def parseString (self, text, baseUrl="", internalOwnerDoc=None): absUrl = convertToAbsUrl ("", baseUrl) try: builder = ExtExpatBuilderNS("", absUrl, self) builder.parseString (text) # XInclude support if self.processXInclude: if internalOwnerDoc == None: internalOwnerDoc = builder.treeWrapper.getTree() self.xInclude (builder.treeWrapper.getRootNode(), absUrl, internalOwnerDoc) except ExpatError, errInst: raise GenXmlIfError, "%s: ExpatError: %s" %(baseUrl, str(errInst))
def parseString (self, text, baseUrl="", ownerDoc=None): absUrl = convertToAbsUrl ("", baseUrl) tree = ElementTreeExtension() treeWrapper = self.treeWrapperClass(self, tree, self.useCaching) parser = ExtXMLTreeBuilder("", absUrl, self, treeWrapper) parser.feed(text) treeWrapper.getTree()._setroot(parser.close()) # XInclude support if self.processXInclude: loaderInst = ExtXIncludeLoader (self.parse, absUrl, ownerDoc) ElementInclude.include(treeWrapper.getTree().getroot(), loaderInst.loader) return treeWrapper
def parse (self, file, baseUrl="", internalOwnerDoc=None): absUrl = convertToAbsUrl(file, baseUrl) fp = urllib.urlopen (absUrl) try: builder = ExtExpatBuilderNS(file, absUrl, self) tree = builder.parseFile(fp) # XInclude support if self.processXInclude: if internalOwnerDoc == None: internalOwnerDoc = builder.treeWrapper.getTree() self.xInclude (builder.treeWrapper.getRootNode(), absUrl, internalOwnerDoc) fp.close() except ExpatError, errInst: fp.close() raise GenXmlIfError, "%s: ExpatError: %s" %(file, str(errInst))
def parse (self, file, baseUrl="", ownerDoc=None): absUrl = convertToAbsUrl (file, baseUrl) fp = urllib.urlopen (absUrl) try: tree = ElementTreeExtension() treeWrapper = self.treeWrapperClass(self, tree, self.useCaching) parser = ExtXMLTreeBuilder(file, absUrl, self, treeWrapper) treeWrapper.getTree().parse(fp, parser) fp.close() # XInclude support if self.processXInclude: loaderInst = ExtXIncludeLoader (self.parse, absUrl, ownerDoc) try: ElementInclude.include(treeWrapper.getTree().getroot(), loaderInst.loader) except IOError, errInst: raise GenXmlIfError, "%s: IOError: %s" %(file, str(errInst)) except ExpatError, errstr: fp.close() raise GenXmlIfError, "%s: ExpatError: %s" %(file, str(errstr))
def parseString (self, text, baseUrl="", internalOwnerDoc=None): import cStringIO fp = cStringIO.StringIO(text) absUrl = convertToAbsUrl ("", baseUrl) return self._parseStream (fp, "", absUrl, internalOwnerDoc)
def parse (self, file, baseUrl="", internalOwnerDoc=None): absUrl = convertToAbsUrl (file, baseUrl) fp = urllib.urlopen (absUrl) return self._parseStream (fp, file, absUrl, internalOwnerDoc)
def parseString(self, text, baseUrl="", internalOwnerDoc=None): import cStringIO fp = cStringIO.StringIO(text) absUrl = convertToAbsUrl("", baseUrl) return self._parseStream(fp, "", absUrl, internalOwnerDoc)
def parse(self, file, baseUrl="", internalOwnerDoc=None): absUrl = convertToAbsUrl(file, baseUrl) fp = urllib.urlopen(absUrl) return self._parseStream(fp, file, absUrl, internalOwnerDoc)