PASMP

PythonでSwiftメッセージ
「Python API for Swift Message Processing」(PASMP)は、PythonでXMLを扱う、SAXやDOMのようにSwiftメッセージを扱うためのAPIです。オープンソースで公開することで、SWIFTメッセージを扱うシステムを開発しやすい環境にすることを目的としています。

PyPIからダウンロードできます => PASMP

pipが使える環境なら以下の実行でダウンロードされます。

pip install pasmp

Sample 1

    import atomsware.pasmp
    from atomsware.pasmp.handler import *


    class QuotationHandler(ContentHandler):
        value = ""

        def __init__(self):
            ContentHandler.__init__(self)

        def startDocument(self, locator):
            print('=== Begin Document ===' + str(locator))

        def startBlock(self, locator, blockNo):
            print('## Begin Block' + blockNo + ' ---' + str(locator))
            self.value = ""

        def startTag(self, locator, tagName):
            print('--- Begin Tag' + tagName + ' ---' + str(locator))
            self.value = ""

        def endTag(self, locator, tagName):
            print(self.value.strip())
            print('--- End Tag' + tagName + ' ---' + str(locator))

        def endBlock(self, locator, blockNo):
            if blockNo == "1" or blockNo == "2":
                print(self.value)
            print('## End Block' + blockNo + ' ---' + str(locator))

        def endDocument(self):
            print('=== End Document ===')

        def characters(self, locator, ch):
            self.value = self.value + ch


    if __name__ == '__main__':
        parser = atomsware.pasmp.make_parser()
        handler = QuotationHandler()
        parser.setContentHandler(handler)
        parser.parse("sample1.mt")

Sample 2

    import atomsware.pasmp
    from atomsware.pasmp.handler import *
    from atomsware.pasmp.models import *

    if __name__ == '__main__':
        parser = atomsware.pasmp.make_parser()
        handler = DomHandler()
        parser.setContentHandler(handler)
        parser.parse("sample2.mt")
        dom = handler.mt

        for block in dom.blocks:
            if isinstance(block, BasicHeaderBlock):
                print(str(block.appID))
                print(str(block.serviceID))
                print(str(block.lTAddr))
                print(str(block.sessionID))
                print(str(block.sequenceID))
            if isinstance(block, ApplicationHeaderBlock):
                print(str(block.ioType))
                print(str(block.messageType))
                print(str(block.lTAddr))
            if isinstance(block, UserHeaderBlock):
                for tag in block.tags:
                    print(str(tag))
            if isinstance(block, TextBlock):
                for tag in block.tags:
                    print(str(tag))