0

文字列としてSOAPメッセージがあり、Javaで解析する必要があります。同じSOAPメッセージの個別のXML部分としてデータとXMLデータコンテンツの署名を含むXMLファイルを受け取ります。以下は、受け取ったサンプルのSOAPメッセージ(有効なxmlではありません)です。

------=_Part_2074_1202079654.1337767440483
Content-Type: text/xml; charset=utf-8
Content-Transfer-Encoding: binary
Content-Id: <164914372224.1337767440483.IBM.WEBSERVICES@su79aas2.pinkroccade.lan>

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><soapenv:Header/>

<soapenv:Body>

<FileSet xmlns="http://www.mydomain.com">
<FileSetId>SRQ</FileSetId>
<File>
<FileType>SRQACK</FileType>
<FileName>ACK-BSP2-BP2-20120523100300-01.xml</FileName>
<FileContentId>1</FileContentId>
</File>
<File><FileType>SRQSIG</FileType>
<FileName>SIG-BSP2-BP2-20120523100300-01.sig</FileName>
<FileContentId>2</FileContentId>
</File>
</FileSet>

</soapenv:Body>
</soapenv:Envelope>
------=_Part_2074_1202079654.1337767440483
Content-Type: text/xml; charset=utf-8
Content-Transfer-Encoding: binary
Content-Id: 1

<?xml version="1.0" encoding="UTF-8"?>
<!--Handle SRQACK, SRSMUT, SUMMUT BP Postbank version 1.1-->
<Acknowledgements xmlns="http://www.mydomain.com">
<Header>
<BatchId>ACK-BSP2-BP2-20120523100300</BatchId>
<InterfaceId>ACK</InterfaceId>
<Version>02.0</Version>
<SourceSystemId>BSP2</SourceSystemId>
<TargetSystemId>BP2</TargetSystemId>
<CreateDateTime>2012-05-23T10:03:00Z</CreateDateTime>
<MessageCount>4</MessageCount>
</Header>
<Acknowledgement>
<BatchId>SRQ-BP2-BSP2-20120416101400</BatchId>
<AckTimeStamp>2012-05-23T10:03:00Z</AckTimeStamp>
<Result>ERROR</Result>
<ReasonCode>107</ReasonCode>
</Acknowledgement>
<Acknowledgement>
<BatchId>SRQ-BP2-BSP2-20120514140516</BatchId>
<AckTimeStamp>2012-05-23T10:03:00Z</AckTimeStamp>
<Result>OK</Result>
</Acknowledgement>
<Acknowledgement>
<BatchId>SRQ-BP2-BSP1-20120514140511</BatchId>
<AckTimeStamp>2012-05-23T10:03:00Z</AckTimeStamp>
<Result>ERROR</Result>
<ReasonCode>112</ReasonCode>
</Acknowledgement>
<Acknowledgement>
<BatchId>SRQ-BP2-BSP3-20120514140520</BatchId>
<AckTimeStamp>2012-05-23T10:03:00Z</AckTimeStamp>
<Result>ERROR</Result>
<ReasonCode>112</ReasonCode>
</Acknowledgement>
</Acknowledgements>

------=_Part_2074_1202079654.1337767440483
Content-Type: text/xml; charset=utf-8
Content-Transfer-Encoding: binary
Content-Id: 2

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<!--Handle SRQSIG, SRSSIG, EXCSIG, SUMSIG BSP 2 Biller version 1.2-->
<nl:Signature xmlns:nl="http://www.mydomain.com">
<SignatureValue>lJw2CNdcgEGEychSH/snpMvnXrV91775UANSZGN23n7hQnlIiak8Dqr9pe6FAtLjkZ9UZPip26VTxGVzeCHdsgYwrLt3mTLfX0h6KeRhPCYGd9QLxok1yv0Ua6iNlP0oEPaE4t6wJw/CKfCua4W0Jbnm18Ym5J7U08YB1+rc4Lw=</SignatureValue>
<Fingerprint>166105D2F2F23663F4405B6D84A4F51B48907F77</Fingerprint>
</nl:Signature>

------=_Part_2074_1202079654.1337767440483--
4

2 に答える 2

0

最初の部分は、テキストから有効な(XMLの観点から)フラグメントを抽出することです。

最初の部分は手動で行う必要があります(=独自のコードを作成する)。運が良ければ、それを実行するライブラリを見つけることができます。

2番目の部分-使用するDOMパーサーにそれらのフラグメントをフィードします。

于 2013-01-19T08:12:38.060 に答える
0

複数行の正規表現を使用して引き出し<ackowledgements*.</ackowledgements>、別の正規表現を使用して<nl:Signature.*<\nl:Signature>、これら2つの文字列を引き出して選択したdomパーサーにフィードします-その方法の例については、JavaでXMLを文字列ではなく文字列として解析する方法を参照してください。ファイル?

于 2013-01-19T08:34:20.380 に答える