Example #1
0
    def Parse(self, data, isfinal=False):
        # The 'data' argument should be an encoded text: a str instance that
        # represents an array of bytes. If instead it is a unicode string,
        # only the us-ascii range is considered safe enough to be silently
        # converted.
        if isinstance(data, unicode):
            data = data.encode(sys.getdefaultencoding())

        self._data.append(data)

        if isfinal:
            bytes = StringUtil.toBytes(self._data.toString())
            byte_stream = ByteArrayInputStream(bytes)
            source = InputSource(byte_stream)
            if self.encoding is not None:
                source.setEncoding(self.encoding)
            try:
                self._reader.parse(source)
            except SAXParseException, sax_error:
                # Experiments tend to show that the '_Next*' parser locations
                # match more closely expat behavior than the 'Current*' or sax
                # error locations.
                self.ErrorLineNumber = self._NextLineNumber
                self.ErrorColumnNumber = self._NextColumnNumber
                self.ErrorCode = None
                raise self._expat_error(sax_error)
            return 1
Example #2
0
    def _createReader(self, path, value, xmlWriter):
        u'''функция создания ридера для чтения файла настроек, с учетом указанного пути'''
        pathList = list()
        name = r"[a-zA-Z_][a-zA-Z_0-9]+"
        elementPatern = regexp.compile(r"""(%s)(?:\[(?:@(%s)=(?:'([^']+)'|\"([^\"]+)\")|([0-9]+))\])?(?:/@(%s))?""" % (name, name, name), regexp.UNICODE)
        lastEnd = -1
        for a in elementPatern.finditer(unicode(path)):
            if lastEnd + 1 != a.start(0) or (lastEnd > 0 and path[lastEnd]not in ('/', '\\')):
                raise CelestaException('Bad XPath expression')
            pathList.append(NodeProperties(a.groups()))
            lastEnd = a.end(0)

        parser = XMLReaderFactory.createXMLReader()
        handler = WriteSettings(pathList, xmlWriter, value)
        parser.setContentHandler(handler)
        parser.setErrorHandler(handler)
        parser.setFeature("http://xml.org/sax/features/namespace-prefixes", True)
        parser.setProperty("http://xml.org/sax/properties/lexical-handler", handler)

        stream = FileInputStream(self._getUserSettingsFilePath())
        parser.parse(InputSource(stream))
        stream.close()

        if not handler.result:
            stream = FileInputStream(self._getSettingsFilePath())
            parser.parse(InputSource(stream))
            stream.close()

        return handler.result
Example #3
0
    def Parse(self, data, isfinal=False):
        # The 'data' argument should be an encoded text: a str instance that
        # represents an array of bytes. If instead it is a unicode string,
        # only the us-ascii range is considered safe enough to be silently
        # converted.
        if isinstance(data, unicode):
            data = data.encode(sys.getdefaultencoding())

        self._data.append(data)

        if isfinal:
            bytes = StringUtil.toBytes(self._data.toString())
            byte_stream = ByteArrayInputStream(bytes)
            source = InputSource(byte_stream)
            if self.encoding is not None:
                source.setEncoding(self.encoding)
            try:
                self._reader.parse(source)
            except SAXParseException, sax_error:
                # Experiments tend to show that the '_Next*' parser locations
                # match more closely expat behavior than the 'Current*' or sax
                # error locations.
                self.ErrorLineNumber = self._NextLineNumber
                self.ErrorColumnNumber = self._NextColumnNumber
                self.ErrorCode = None
                raise self._expat_error(sax_error)
            return 1
Example #4
0
    def authorizeFortress(self, user_name):
        responseData = self.getFortressResponse(user_name)
        print responseData
        dbf = DocumentBuilderFactory.newInstance()
        fortressAuthenticated = False
        db = None
        try:
            db = dbf.newDocumentBuilder()
            print responseData
            isource = InputSource()
            isource.setCharacterStream(StringReader(responseData))
            try:
                doc = db.parse(isource)
                errorCode = doc.getElementsByTagName("errorCode")
                valueSet = doc.getElementsByTagName("valueSet")
                if (errorCode.item(0).getTextContent() == "0"
                        and self.roleExists("GLUU_ADMIN", valueSet)):
                    return True
                else:
                    fortressAuthenticated = False
            except Exception, ex:
                print "Exception"

        except ParserConfigurationException, pce:
            print pce
Example #5
0
 def endElement(self, uri, lname, qname):
     if self.state == 1 and uri == "http://www.w3.org/2002/xforms" and lname == "model":
         #вставка биндов для правил в mainModel
         stream = FileInputStream(self.bindPath)
         self.parser.parse(InputSource(stream))
         self.state = 0
     self.xmlWriter.writeEndElement()
Example #6
0
def getXMLcontent(result):
    parser = DOMParser()
    parser.reset()
    parser.parse(InputSource(result.inputStream))
    root = parser.getDocument().getDocumentElement()

    return root
Example #7
0
 def readConfig(self, fh=None, xml=None):
     self.fh = fh
     self.xml = xml
     self.tree = None
     self.doc = None
     self.cellTree = None
     if self.fh != None:
         self.logger.info("readConfig: processing xml file")
         self.logger.debug("readConfig: file %s " % fh)
         input = FileInputStream(self.fh)
         fhtree = builder.parse(input)
         self.tree = fhtree.getDocumentElement()
         self.cellTree = fhtree.getElementById('Cell')
     elif self.xml != None:
         self.logger.info("readConfig: processing xml String")
         str = StringReader(xml)
         strstrm = InputSource(str)
         self.doc = builder.parse(strstrm)
         self.tree = self.doc.getDocumentElement()
         self.cellTree = self.doc.getElementById('Cell')
     else:
         self.logger.error("readConfig: You did not supply a valid xml file handle or xml string to the readConfig method.")
         raise ProcessConfigException("readConfig: You did not supply a valid xml file handle or xml string to the readConfig method.")
     self.logger.debug("readConfig: self.tree = %s" % (self.tree))
     self.treeDict = []
     self.logger.debug("readConfig: processing base tree elements")
     self.logger.debug("readConfig: self.tree: %s " % self.tree)
     self.walkXMLTree(self.tree, 0)
     self.logger.debug("readConfig: self.treeDict = %s" % (self.treeDict))
     return self.treeDict
Example #8
0
def mainproc():
    u'''Функция для склейки карточки с блоками правил'''
    try:
        rootPath = AppInfoSingleton.getAppInfo().getCurUserData().getPath(
        ) + '/xforms/'
    except:
        rootPath = 'E:/Projects/celesta/ssmmd/userscore/ssmmd/xforms/file/'

    templatePath = rootPath + add  #путь к карточке, в которую необходимо вставить праила
    rulePath = rootPath + 'ruleTemplate.xml'  #путь к блоку с правилами
    bindPath = rootPath + 'bindTemplate.xml'  #путь к блоку с биндами для правил

    stringWriter = StringWriter()
    xmlWriter = XMLOutputFactory.newInstance().createXMLStreamWriter(
        stringWriter)

    parser = XMLReaderFactory.createXMLReader()
    handler = XformsAddRules(rulePath, bindPath, xmlWriter)
    parser.setContentHandler(handler)
    parser.setErrorHandler(handler)
    parser.setFeature("http://xml.org/sax/features/namespace-prefixes", True)
    parser.setProperty("http://xml.org/sax/properties/lexical-handler",
                       handler)

    stream = FileInputStream(templatePath)
    parser.parse(InputSource(stream))
    xmlWriter.close()
    stringWriter.close()
    return unicode(stringWriter)
Example #9
0
    def __call__(self):
        if grinder.runNumber > 0 or grinder.threadNumber > 0:
            raise RuntimeError("Use limited to one thread, one run; "
                               "see Amazon Web Services terms and conditions")

        request = HTTPRequest(url="http://xml.amazon.com/onca/xml")
        bookDetailsTest.record(request)

        parameters = (
            NVPair("v", "1.0"),
            NVPair("f", "xml"),
            NVPair("t", "webservices-20"),
            NVPair("dev-t", "<insert license key here>"),
            NVPair("type", "heavy"),
            NVPair("AsinSearch", "1904284000"),
        )

        bytes = request.POST(parameters).inputStream

        # Parse results
        document = parser.buildDocumentUrl(InputSource(bytes))

        result = {}

        for details in document.getElementsByTagName("Details"):
            for detailName in ("ProductName", "SalesRank", "ListPrice"):
                result[detailName] = details.getElementsByTagName(
                    detailName)[0].firstChild.nodeValue

        grinder.logger.info(str(result))
Example #10
0
 def extractRootElement(self):
     """Setup an XML parser
     """
     dbf = DocumentBuilderFactory.newInstance()
     dbf.setNamespaceAware(1)
     domparser = dbf.newDocumentBuilder()
     doc = domparser.parse(InputSource(StringReader(self.app.errorsData)))
     rootElement = doc.getDocumentElement()
     return rootElement
Example #11
0
def checkResponseBody(inStream):
    docBuilder = DocumentBuilderFactory.newInstance().newDocumentBuilder()
    source = InputSource()
    source.setByteStream(inStream)
    doc = docBuilder.parse(source)
    tag = "SAIL_Error"
    nodeList = doc.getElementsByTagName(tag)
    count = nodeList.getLength()
    if (count < 1):
        fatal("response did not contain a '" + tag + "' tag: " + responseBody)
    if (count > 1):
        fatal("response contained multiple '" + tag + "' tags: " +
              responseBody)
    node = nodeList.item(0)
    id = node.getAttribute("ID")
    if (id != "AC_OK"):
        msg = node.getAttribute("Msg")
        fatal("from IHS Admin Server: " + msg)
Example #12
0
 def startElement(self, namespaceURI, lname, qname, attrs):
     if (namespaceURI == "http://www.w3.org/2002/xforms"
             and lname == "submission" and self.state == 1):
         #вставка биндов для правил в mainModel
         stream = FileInputStream(self.bindPath)
         self.parser.parse(InputSource(stream))
         self.state = 2
     self.xmlWriter.writeStartElement(qname)
     for i in range(0, attrs.getLength()):
         self.xmlWriter.writeAttribute(attrs.getQName(i), attrs.getValue(i))
     if (attrs.getValue(attrs.getIndex("class")) == "rule"):
         #вставка блока с правилами в div с классом "rule"
         stream = FileInputStream(self.rulePath)
         self.parser.parse(InputSource(stream))
     if (namespaceURI == "http://www.w3.org/2002/xforms" and lname == "model" \
         and attrs.getValue(attrs.getIndex("id")) == "xformId_mainModel"):
         #вставка биндов для правил в mainModel
         self.state = 1
Example #13
0
 def _empty_source(self, *args):
     name, publicId, baseURI, systemId = args
     source = InputSource()
     byte_stream = ByteArrayInputStream(array([], "b"))
     source.setByteStream(byte_stream)
     source.setPublicId(publicId)
     source.setSystemId(systemId)
     return source
Example #14
0
def readFileSAX(filename):
    try:
        FIS = FileInputStream(File(filename))
        ISR = InputStreamReader(FIS, ENCODING)
        src = InputSource(ISR, encoding=ENCODING)
        factory = SAXParserFactory.newInstance()
        factory.setValidating(1)
        parser = factory.newSAXParser()
        parser.parse(src, SAXhandler())
    except:
        print '\nError: %s\nvalue: %s' % sys.exc_info()[:2]
Example #15
0
    def load(self, filename, language):
    parser = XMLReaderFactory.createXMLReader()
    
    #if (filename.endsWith(".gz")):
        #input_src = InputSource(GZipInputStream(FileInputStream(filename)))
    #else:
    input_src = InputSource(filename)
    
    parser.contentHandler = ParseHandler(language)
    parser.parse(input_src)

    HibernateUtil.commitTransaction()
    HibernateUtil.closeSession()
Example #16
0
    def uploadXML(self, action="ui"):
        '''
    функция реализует загрузку данных из xml в базу данных
'''
        parser = XMLReaderFactory.createXMLReader()
        handler = UploadXMLHandler(self.tableInstance, action)
        parser.setContentHandler(handler)
        parser.setErrorHandler(handler)
        parser.setFeature("http://xml.org/sax/features/namespace-prefixes",
                          True)
        parser.setProperty("http://xml.org/sax/properties/lexical-handler",
                           handler)
        parser.parse(InputSource(self.dataStream))
Example #17
0
 def tiltCallback(self, topic, message):
     tiltEvent = {'name': 'Motion/Tilt/MotionStatus'}
     try:
         builder = DocumentBuilderFactory.newInstance().newDocumentBuilder()
         topnode = builder.parse(InputSource(StringReader((
                                message.toString())))).getFirstChild()
         assert topnode.getNodeName() == 'Payload'
         nodes1lev = topnode.getChildNodes()
         for i in xrange(nodes1lev.getLength()):
             node1 = nodes1lev.item(i)
             assert node1.getNodeName() == 'Parameter'
             atts = node1.getAttributes()
             tiltEvent[atts.item(0).getNodeValue()] = node1.getTextContent()
     except Exception, e:
         print "Error in SenSafety/mqtt xml format, " + str(e)
Example #18
0
    def resolveEntity(self, name, publicId, baseURI, systemId):
        logger.debug("XMLExternalEntityResolver resolveEntity, name : ", name,
                     ", publicId: ", publicId, ", baseURI: ", baseURI,
                     ", systemId: ", systemId)

        try:
            filename = systemId
            logger.debug('resolveEntity, file name: ', filename, ", path: ",
                         self.remotePath)
            strContent = String(
                self.fileMonitor.getFileContent(self.remotePath +
                                                self.fsSeparator + filename))
            return InputSource(ByteArrayInputStream(strContent.getBytes()))
        except Exception, ex:
            logger.debug("XMLExternalEntityResolver Exception: ", ex)
Example #19
0
def __readWsdlWithIBMFactory(wsdlData, importWsdlDocuments=1):
    if wsdlData == None:
        raise WSDLException('WSDL Content is Null')
    else:
        from com.ibm.wsdl.factory import WSDLFactoryImpl
        wsdlfactoryIdox = WSDLFactoryImpl()
        reader = wsdlfactoryIdox.newWSDLReader()
        if importWsdlDocuments == 1:
            reader.setFeature('javax.wsdl.importDocuments', Boolean.TRUE)
        else:
            reader.setFeature('javax.wsdl.importDocuments', Boolean.FALSE)

        wsdlData = String(wsdlData.strip())
        arr = wsdlData.getBytes()
        stream = ByteArrayInputStream(arr)
        inSrc = InputSource(stream)
        defintion = reader.readWSDL(None, inSrc)
        return defintion
    def findXpathNodes(self, xmlAsText, xpathExpr):
        xmlText = InputSource(
            ByteArrayInputStream(lang.String(xmlAsText).getBytes()))
        docBuilderFactory = DocumentBuilderFactory.newInstance()
        docBuilderFactory.setValidating(0)
        docBuilderFactory.setNamespaceAware(0)
        docBuilder = docBuilderFactory.newDocumentBuilder()
        doc = docBuilder.parse(xmlText)
        xpathFactory = XPathFactory.newInstance()
        xPath = xpathFactory.newXPath()
        expr = xPath.compile(xpathExpr)

        nodeList = expr.evaluate(doc, XPathConstants.NODESET)
        nodeCount = nodeList.getLength()
        count = 0
        xpathNodes = []
        while count < nodeCount:
            xpathNodes.append(nodeList.item(count))
            count = count + 1
        return xpathNodes
Example #21
0
def DoXPath (Filename,XPathString):
	IS = InputSource (FileInputStream (Filename))
	df = DocumentBuilderFactory.newInstance()
	df.setNamespaceAware(1)
	doc = df.newDocumentBuilder().parse(IS)
	serializer = TransformerFactory.newInstance().newTransformer()
	serializer.setOutputProperty (OutputKeys.OMIT_XML_DECLARATION, "yes")
	nl = XPathAPI.selectNodeIterator (doc,XPathString)
	n = nl.nextNode()
	while n:
		if IsTextNode (n):
			# Coalesce contiguous text nodes
			res = [n.getNodeValue()]
			nn = n.getNextSibling()
			while (nn):
				res.append (nn.getNodeValue())
				nn = n.getNextSibling()
			java.lang.System.out (string.join(res,""))
		else:
			serializer.transform (DOMSource(n), StreamResult (OutputStreamWriter (java.lang.System.out)))
		java.lang.System.out.println()
		n = nl.nextNode()
Example #22
0
 def _parse_from_source(self, source):
     from com.indelv.dom.util import XMLReader
     from org.xml.sax import InputSource
     return Document(XMLReader.parseDocument(InputSource(source)))
Example #23
0
 def buildDocumentString(self, string):
     from java.io import StringReader
     from org.xml.sax import InputSource
     return self._parse_from_source(InputSource(StringReader(string)))
Example #24
0
 def resolveEntity(self, publicId, systemId):
     return InputSource(
         ClassLoader.getSystemResourceAsStream("dtds/" +
                                               os.path.split(systemId)[1]))
def loadXMLFromString(xml):
	db = DocumentBuilderFactory.newInstance().newDocumentBuilder()
	inputSource = InputSource(StringReader(xml));
	return(db.parse(inputSource))
Example #26
0
class XMLEventHandler(DefaultHandler2):
    def __init__(self, parser):
        self.parser = parser
        self._tags = {}
        self.not_in_dtd = True
        self._entity = {}
        self._previous_event = None

    # --- Helpers -------------------------------------------------------------

    def _intern(self, tag):
        return self._tags.setdefault(tag, tag)

    def _qualify(self, local_name, qname, namespace=None):
        namespace_separator = self.parser.namespace_separator
        if namespace_separator is None:
            return qname
        if not namespace:
            return local_name
        else:
            return namespace + namespace_separator + local_name

    def _char_slice_to_unicode(self, characters, start, length):
        """Convert a char[] slice to a PyUnicode instance"""
        text = Py.newUnicode(String(characters[start:start + length]))
        return text

    def _expat_content_model(self, name, model_):
        # TODO : implement a model parser
        return (name, model_)  # does not fit expat conventions

    def _update_location(self, event=None):
        parser = self.parser
        locator = self._locator

        # ugly hack that takes care of a xerces-specific (?) locator issue:
        # locate start and end elements at the '<' instead of the first tag
        # type character.
        if event == "startElement" and self._previous_event == "characters":
            parser._NextColumnNumber = max(parser._NextColumnNumber - 1, 0)
        if event == "endElement" and self._previous_event == "characters":
            parser._NextColumnNumber = max(parser._NextColumnNumber - 2, 0)
        # TODO: use the same trick to report accurate error locations ?

        parser.CurrentLineNumber = parser._NextLineNumber
        parser.CurrentColumnNumber = parser._NextColumnNumber
        parser._NextLineNumber = locator.getLineNumber()
        parser._NextColumnNumber = locator.getColumnNumber() - 1

        self._previous_event = event

    # --- ContentHandler Interface --------------------------------------------

    @expat("ProcessingInstructionHandler")
    def processingInstruction(self, target, data):
        return target, data

    @expat("StartElementHandler")
    def startElement(self, namespace, local_name, qname, attributes):
        tag = self._qualify(local_name, qname, namespace)
        attribs = {}
        length = attributes.getLength()
        for index in range(length):
            local_name = attributes.getLocalName(index)
            qname = attributes.getQName(index)
            namespace = attributes.getURI(index)
            name = self._qualify(local_name, qname, namespace)
            value = attributes.getValue(index)
            attribs[name] = value
        return self._intern(tag), attribs

    @expat("EndElementHandler")
    def endElement(self, namespace, local_name, qname):
        return self._intern(self._qualify(local_name, qname, namespace))

    @expat("CharacterDataHandler")
    def characters(self, characters, start, length):
        return self._char_slice_to_unicode(characters, start, length)

    @expat("DefaultHandlerExpand")
    def characters(self, characters, start, length):
        return self._char_slice_to_unicode(characters, start, length)

    @expat("DefaultHandler")
    def characters(self, characters, start, length):
        # TODO: make a helper function here
        if self._entity["location"] == (self.parser.CurrentLineNumber,
                                        self.parser.CurrentColumnNumber):
            return "&%s;" % self._entity["name"]
        else:
            return self._char_slice_to_unicode(characters, start, length)

    @expat("StartNamespaceDeclHandler")
    def startPrefixMapping(self, prefix, uri):
        return prefix, uri

    @expat("EndNamespaceDeclHandler")
    def endPrefixMapping(self, prefix):
        return prefix

    empty_source = InputSource(ByteArrayInputStream(array([], "b")))

    @expat("ExternalEntityRefHandler",
           guard="not_in_dtd",
           returns=empty_source)
    def resolveEntity(self, name, publicId, baseURI, systemId):
        context = name  # wrong. see expat headers documentation.
        base = self.parser.GetBase()
        return context, base, systemId, publicId

    @expat("DefaultHandlerExpand", guard="not_in_dtd", returns=empty_source)
    def resolveEntity(self, name, publicId, baseURI, systemId):
        return "&%s;" % name

    @expat("DefaultHandler", guard="not_in_dtd", returns=empty_source)
    def resolveEntity(self, name, publicId, baseURI, systemId):
        return "&%s;" % name

    @expat(force=True, returns=empty_source)
    def resolveEntity(self, name, publicId, baseURI, systemId):
        pass

    def setDocumentLocator(self, locator):
        self._locator = locator

    def skippedEntity(self, name):
        error = ExpatError()
        error.lineno = self.ErrorLineNumber = self.parser._NextLineNumber
        error.offset = self.ErrorColumnNumber = self.parser._NextColumnNumber
        error.code = self.ErrorCode = None
        message = "undefined entity &%s;: line %s, column %s"
        message = message % (name, error.lineno, error.offset)
        error.__init__(message)
        raise error

    # --- LexicalHandler Interface --------------------------------------------

    @expat("CommentHandler")
    def comment(self, characters, start, length):
        return self._char_slice_to_unicode(characters, start, length)

    @expat("StartCdataSectionHandler")
    def startCDATA(self):
        return ()

    @expat("EndCdataSectionHandler")
    def endCDATA(self):
        return ()

    @expat("StartDoctypeDeclHandler", force=True)
    def startDTD(self, name, publicId, systemId):
        self.not_in_dtd = False
        has_internal_subset = 0  # don't know this ...
        return name, systemId, publicId, has_internal_subset

    @expat("EndDoctypeDeclHandler", force=True)
    def endDTD(self):
        self.not_in_dtd = True

    def startEntity(self, name):
        self._entity = {}
        self._entity["location"] = (self.parser._NextLineNumber,
                                    self.parser._NextColumnNumber)
        self._entity["name"] = name

    def endEntity(self, name):
        pass

    # --- DTDHandler Interface ------------------------------------------------

    @expat("NotationDeclHandler")
    def notationDecl(self, name, publicId, systemId):
        base = self.parser.GetBase()
        return name, base, systemId, publicId

    @expat("UnparsedEntityDeclHandler")  # deprecated
    def unparsedEntityDecl(self, name, publicId, systemId, notationName):
        base = self.parser.GetBase()
        return name, base, systemId, publicId, notationName

    # --- DeclHandler Interface -----------------------------------------------

    @expat("AttlistDeclHandler")
    def attributeDecl(self, eName, aName, type, mode, value):
        # TODO: adapt mode, required, etc.
        required = False
        return eName, aName, type, value, required

    @expat("ElementDeclHandler")
    def elementDecl(self, name, model):
        return self._expat_content_model(name, model)

    @expat("EntityDeclHandler")
    def externalEntityDecl(self, name, publicId, systemId):
        base = self.parser.GetBase()
        value = None
        is_parameter_entity = None
        notation_name = None
        return (name, is_parameter_entity, value, base, systemId, publicId,
                notation_name)

    @expat("EntityDeclHandler")
    def internalEntityDecl(self, name, value):
        base = self.parser.GetBase()
        is_parameter_entity = None
        notation_name = None
        systemId, publicId = None, None
        return (name, is_parameter_entity, value, base, systemId, publicId,
                notation_name)
Example #27
0
    sys.path.append(os.getcwd())  # in PyCharm this fixes import errors

from javax.xml.xpath import *
from net.sf.saxon.s9api import *
from org.xml.sax import InputSource
from javax.xml.transform.sax import SAXSource
from java.lang import System
from net.sf.saxon.xpath import *

from bottle import route, run, request, error, app

xpf = XPathFactoryImpl()
xpe = xpf.newXPath()
System.err.println("Loaded XPath Provider " + xpe.getClass().getName())

input_s = InputSource("input.xml")
sax_source = SAXSource(input_s)
doc = xpe.setSource(sax_source)

template = """
    <html>
        <body>
            Search Books:
            <form action='/' method='GET'>
                <input type='text' name='title' size=50 value="%s">
                <select name="type">
                    <option value="*">All</option>
                    <option value="books">Books</option>
                    <option value="videos">Videos</option>
                </select>
                <select name="rent_days">