Beispiel #1
0
    def __mapXpathToFields(self, sourceData, map, responseData, index=1):
        for xpath in map.keySet():
            field = map.get(xpath)
            if xpath != "":
                xpathobj = DefaultXPath(xpath)
                if not self.defaultNamespace is None:
                    xpathobj.setNamespaceContext(
                        SimpleNamespaceContext(self.defaultNamespace))

                nodes = xpathobj.selectNodes(sourceData)

                if isinstance(field, JsonObject):
                    #The XPath key provides a dictionary containing sub xpath queries mapped to fields
                    i = 1
                    for node in nodes:
                        self.__mapXpathToFields(node, field, responseData, i)
                        i += 1
                else:
                    # Lists indicate we're copying the several fields
                    if isinstance(field, JSONArray):
                        for eachField in field:
                            self.__insertFieldData(nodes, eachField,
                                                   responseData, index)
                    # or just one field
                    else:
                        self.__insertFieldData(nodes, field, responseData,
                                               index)