Decompress NSString to xml in objective c - ios

I'm having a stirng like below...
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
I need to convert this string to an XML.
I'd tried to decompress the string by getting the byte array from the string using base64 encoding. But I failed to move on. I don't think I'm in the right path. I searched a lot for any libraries found for NSString decompression. But no luck.
The input string is valid one. I succeed with online string decompress to xml.

That is XML data that was compressed with zlib to the zlib format, and then Base64 encoded. You need to decode the Base64, then decompress with zlib. Then you get:
<?xml version="1.0" encoding="UTF-8"?>
<ThreeDSecure><Message id="PAReq-tdnD8zqWDC"><PARes id="lQCkUVS06gWpyMR8uKCL"><version>1.0.2</version><Merchant><acqBIN>494000</acqBIN><merID>123456789</merID></Merchant><Purchase><xid>fregBoJ/QFmCwyPNUO3/czQ4NTM=</xid><date>20170120 12:39:40</date><purchAmount>92400</purchAmount><currency>682</currency><exponent>2</exponent></Purchase><pan>0000000000002349</pan><TX><time>20170125 06:56:08</time><status>Y</status><cavv>MDAwMDAwMDAwMDAwMDAwMDAwMDA=</cavv><eci>05</eci><cavvAlgorithm>1</cavvAlgorithm></TX></PARes><Signature xmlns="http://www.w3.org/2000/09/xmldsig#"><SignedInfo xmlns="http://www.w3.org/2000/09/xmldsig#"><CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/><SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/><Reference URI="#lQCkUVS06gWpyMR8uKCL"><DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/><DigestValue>hbDuU8EtfIpHUvG/Q/HLYpsRzRc=</DigestValue></Reference></SignedInfo><SignatureValue>FfWa1AIOdMNCJ0oinMXpL8o87oFSu661LERkaMqRWCDvno+GWbkbSe9Yrj35SszM
d6ykJF9VO/k83R9thBa6pdiQjBdGY1SzCg89QeZna5JciLdMoGcgZcwEK9mfhoke
uWrTiRVEJKjKKbhhzLmRsz0xD02655S/Lf8gMxNo5h0=</SignatureValue><KeyInfo><X509Data><X509Certificate>MIIDmTCCAwKgAwIBAgIJAPF+fmqkPJDeMA0GCSqGSIb3DQEBBQUAMIGNMQswCQYDVQQGEwJGUjELMAkGA1UECBMCMDYxDTALBgNVBAcTBE5pY2UxEDAOBgNVBAoTB0FtYWRldXMxHDAaBgNVBAsTE2Rldi1yZG0tdGtlLWZyYS1wYXkxDTALBgNVBAMTBFBheTExIzAhBgkqhkiG9w0BCQEWFHBheWRlbGRlQGFtYWRldXMuY29tMB4XDTEwMDEyMTEyMDYzOVoXDTIwMDExOTEyMDYzOVowgY0xCzAJBgNVBAYTAkZSMQswCQYDVQQIEwIwNjENMAsGA1UEBxMETmljZTEQMA4GA1UEChMHQW1hZGV1czEcMBoGA1UECxMTZGV2LXJkbS10a2UtZnJhLXBheTENMAsGA1UEAxMEUGF5MjEjMCEGCSqGSIb3DQEJARYUcGF5ZGVsZGVAYW1hZGV1cy5jb20wgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAOKX3GP0ReHByXeWybNAJAHhc1j+OxZkuUReM7ad4eeY1LMcTpaEAQlPpUmHzxcSx89BJMNXa0lMKE/AgPpT3fhGsjWiBFm2q0xJCyQ1qBZvk+yOKyk0iCDMTqzMqtc/TqyodqCAwbakVCxUOi5Cb4WzczstJOvo50MlrXnaIDLPAgMBAAGjgf4wgfswCQYDVR0TBAIwADAsBglghkgBhvhCAQ0EHxYdT3BlblNTTCBHZW5lcmF0ZWQgQ2VydGlmaWNhdGUwHQYDVR0OBBYEFIMqSPhtZJzMLdFl3StjxnHz90eXMIGgBgNVHSMEgZgwgZWhgYekgYQwgYExCzAJBgNVBAYTAkZSMQswCQYDVQQIEwIwNjEQMA4GA1UEChMHQW1hZGV1czEcMBoGA1UECxMTZGV2LXJkbS10a2UtZnJhLXBheTEQMA4GA1UEAxMHUGF5Um9vdDEjMCEGCSqGSIb3DQEJARYUcGF5ZGVsZGVAYW1hZGV1cy5jb22CCQDxfn5qpDyQ3TANBgkqhkiG9w0BAQUFAAOBgQATGO3GViQXVgb+ZRUXDlda2oq30l+Lkr2dihnIp2eRYAhqV8ZyO3UsbnBKuFMKkwjVXoraiGBvBsFLBl2iMNyPre4yCn4DOP+sT31R9R2XOdCdiMxlQqKr8K+6dkano37jJ5SwiMEtns0QmBsJQcx2yo0zlh1BbfpzO4pp4JXQxg==</X509Certificate><X509Certificate>MIICnjCCAgegAwIBAgIJAPF+fmqkPJDdMA0GCSqGSIb3DQEBBQUAMIGBMQswCQYDVQQGEwJGUjELMAkGA1UECBMCMDYxEDAOBgNVBAoTB0FtYWRldXMxHDAaBgNVBAsTE2Rldi1yZG0tdGtlLWZyYS1wYXkxEDAOBgNVBAMTB1BheVJvb3QxIzAhBgkqhkiG9w0BCQEWFHBheWRlbGRlQGFtYWRldXMuY29tMB4XDTEwMDEyMTEyMDExMFoXDTIwMDExOTEyMDExMFowgY0xCzAJBgNVBAYTAkZSMQswCQYDVQQIEwIwNjENMAsGA1UEBxMETmljZTEQMA4GA1UEChMHQW1hZGV1czEcMBoGA1UECxMTZGV2LXJkbS10a2UtZnJhLXBheTENMAsGA1UEAxMEUGF5MTEjMCEGCSqGSIb3DQEJARYUcGF5ZGVsZGVAYW1hZGV1cy5jb20wgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAJv6gS421cLaBecYhvP06VgcmwcCRNCon7UPnxmd2NYpctUyZBB56X7XYq3MNZjerz044IKEA4V/dNPbuOMJtr9IpYHr+UO4hAdt1KAsIK9ILjSGPHK6QtHN0bLAKkTa55ZjU3Zfl01vv9umHQTe8ibD5C8TXgYVe/QPJFVLXQKvAgMBAAGjEDAOMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEFBQADgYEAb/9OZRzVl99KpUEed0GfaFCq8rXZiwlNyl5HOu4gLzDzMsSgb0zMzABUopArkOwvuz4KPzcPPK31QlPjQ5JL4Z271zxH+pmk3oPgNF+oje/Smk0ZygQGh/lYFor7E/nva0vT1/Lq4917ag+mnfnPbV7hWDOfyGn51J8i7npll04=</X509Certificate><X509Certificate>MIIDbDCCAtWgAwIBAgIJAPF+fmqkPJDcMA0GCSqGSIb3DQEBBQUAMIGBMQswCQYDVQQGEwJGUjELMAkGA1UECBMCMDYxEDAOBgNVBAoTB0FtYWRldXMxHDAaBgNVBAsTE2Rldi1yZG0tdGtlLWZyYS1wYXkxEDAOBgNVBAMTB1BheVJvb3QxIzAhBgkqhkiG9w0BCQEWFHBheWRlbGRlQGFtYWRldXMuY29tMB4XDTEwMDEyMTExNTAyOFoXDTIwMDExOTExNTAyOFowgYExCzAJBgNVBAYTAkZSMQswCQYDVQQIEwIwNjEQMA4GA1UEChMHQW1hZGV1czEcMBoGA1UECxMTZGV2LXJkbS10a2UtZnJhLXBheTEQMA4GA1UEAxMHUGF5Um9vdDEjMCEGCSqGSIb3DQEJARYUcGF5ZGVsZGVAYW1hZGV1cy5jb20wgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAOAc5lmtIlbbAIvQZytpCNaqTIZWRzyntCYGDLSnqlHcreOVlLfvSEibAAv6hkORzHprQZ3zU08KFi3AIxAJU82MeOEhJEyZ86LPMA7T6Nnv6NmDfHVm+5my/HJg8az/N9N/AMWroY6BZIxclYwZ1wucju6CjhRXeKY6NdtdQRhFAgMBAAGjgekwgeYwHQYDVR0OBBYEFNMizUvONpSpaL18WOoxJ7+qJf+jMIG2BgNVHSMEga4wgauAFNMizUvONpSpaL18WOoxJ7+qJf+joYGHpIGEMIGBMQswCQYDVQQGEwJGUjELMAkGA1UECBMCMDYxEDAOBgNVBAoTB0FtYWRldXMxHDAaBgNVBAsTE2Rldi1yZG0tdGtlLWZyYS1wYXkxEDAOBgNVBAMTB1BheVJvb3QxIzAhBgkqhkiG9w0BCQEWFHBheWRlbGRlQGFtYWRldXMuY29tggkA8X5+aqQ8kNwwDAYDVR0TBAUwAwEB/zANBgkqhkiG9w0BAQUFAAOBgQC+DkhLNPHyBusOZHdJrvmgtnbzmxaHiF7UPDaAl4XhyU3u8oH9KC37+hA9Xd8tT/1eE6KTQWLVnpgrE1N1MDohbAdH0SngL6Pl952p7cFTKd6KTflEuntF/OP7PF0fG62Rh6CMU9218e/S9fCHSw+nznUGwRXokwgZufahHlKu7w==</X509Certificate></X509Data></KeyInfo></Signature></Message></ThreeDSecure>

Related

Create file in Memory, add content and convert to Base64

There is a Web Service that is running in an external system. The Web Service expects an XML file which is Base64 encoded.
In my ABAP program, I have the XML that I want to post to the Web Service in a XSTRING variable.
The issue here is that the Base64 version of a string and a file which contains the the same string is inherently different.
The most direct solution that I know is to write the string to a file and then convert the file into Base64 and post it to the Web Service. The problem here is that the XML string that I have to too sensitive to be stored in the file system even temporarily.
So my question:
Is there a way to create a file during runtime in memory, add the XML that I have into that file in memory and finally convert it to a Base64 string, all during the runtime without ever using the actual file system.
DATA: lv_xstring TYPE xstring.
xstring = '<document>some xml data</document>'.
xstring --> into a file in memory --> convert to a Base64 string
You can directly convert string or xstring to base64 in ABAP. Check SCMS_BASE64_ENCODE_STR FM for xtsring to base64 string conversition.
On the other hand, generally binary data (xstring) transport as base64 encoded string in SOAP body. So may be you don't need to convert it to base64, just convert xml to xstring then assign it to method parameter.

How to decode Base64 encoded binary(encoded using LZX algorithm) back to original string

I'm trying to decode a string which is encoded using LZX algorithm with a LZX window size of 2 megabytes (binary) and then converted to base64.
I'm receiving this string in response from Microsoft's Update API (GetUpdateData).
As per Microsoft documentation for the lzx/lz77 algorithm, the XmlUpdateBlobCompressed field is:
compressed using a LZX variant of the Lempel-Ziv compression algorithm. The LZX window size used for compressing this field is 2 megabytes.
I tried to decode/decompress the string back to its original XML with no success. I tried the lz_string library (NodeJS/Ruby) and some other libraries but had no success so far.
Here is a sample I'm trying to decode/decompress back to the original XML:
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
Has anybody had success doing this?
As added in comment by Dave, it was the cab file which was there in response.
I have saved the cab file & extracted it using libmspack
cab_file_path = "/Users/kalpesh/playground/xml.cab"
cab_file = File.open(cab_file_path, "wb")
# Save Cab file
cab_file.puts Base64.decode64(xml_blob) # xml_blob is the sample which I have given in description
# Extract cab file
blob_xml_path = "/Users/kalpesh/playground/xml_blob.txt"
cab_decompressor = LibMsPack::CabDecompressor.new
cab = cab_decompressor.open(cab_file_path)
cab_decompressor.extract(cab.files, blob_xml_path)

Deserialize XML with UTF-16 encoding in ServiceStack.Text

I am trying to use ServiceStack.Text to deserialize some XML.
Code:
var buildEvent = dto.EventXml.FromXml<TfsEventBuildComplete>();
The opening xml line is:
<?xml version="1.0" encoding="UTF-16"?>
ServiceStack fails with the following error:
The encoding in the declaration 'utf-16' does not match the encoding of the document 'utf-8'.
I can see from the source of the Xml Serializer that ServiceStack uses UTF-8.
I am wondering whether ServiceStack.Text can deserialize UTF-16 and if so how? And if not, why not?
I have managed to hack my way around the issue. I'm not proud of it but....
var buildEvent = dto.EventXml.Replace("utf-16", "utf-8").FromXml<TfsEventBuildComplete>();

Can we change XML encoding from utf-8 to utf -16?

I have written a code for generating XML with UTF-8 encoding.I always validate the XML with XSD file. In the same code i need UTF-16 encoding. Because one of my XSD file is of UTF-16 encoding.
But in my existing code it is not accepted. it gives following error.
FAILED: Fatal error: Document labelled UTF-16 but has UTF-8 content at filepath/standard.xsd:1.
and at line 1 of XSD this tag is defined <?xml version="1.0" encoding="utf-16"?>
How can i validate it with utf-8 encoding?
Is there any way to change UTF-16 to UTF-8 encoding.
Thanks in advance.
You can change the encoding from utf16 to utf-8 with Iconv
Call iconv from Ruby 1.8.7 through system to convert a file from utf-16 to utf-8
When you write the new file you can replace the first line with a new header like
<?xml version="1.0" encoding="utf-8" ?>
Ruby - Open file, find and replace multiple lines
If you need it in the other way then change the endoding in the function.

parse XML file that contains unicode characters in iphone

I am trying to parse one XML file that contains some unicode characters.I tried to parse the file using NSXMLParser but i am unable to parse XML.Parser stops when it encounters any unicode characters.
Is there any other good solution to parse XML file with unicode letters?
Please suggest.
Have you tried TBXML for iPhone http://www.tbxml.co.uk/

Resources