Oje noch ein Blog Übers Leben, das Universum und den ganzen anderen Rest…

13Apr/110

String mit .NET komprimieren und und mit Ruby wieder entpacken

Das hab ich gebastelt um einen XML String aus .NET über POST Request an eine Ruby on Rails Applikation zu übertragen und dort weiterzuverarbeiten. Um beim senden keine Probleme zu verursachen wird der GZIP komprimierte String BASE64 kodiert.

.NET Code (VB.NET 2010)

Imports System.Security.Cryptography
Imports System.IO.Compression

Public Function Compress(ByVal text As String) As String
	Try
		Dim buffer() As Byte = Encoding.UTF8.GetBytes(text)
		Dim memoryStream = New MemoryStream()
		Using gZipStream = New GZipStream(memoryStream, CompressionMode.Compress, True)
			gZipStream.Write(buffer, 0, buffer.Length)
		End Using
		Return Convert.ToBase64String(memoryStream.GetBuffer)

	Catch ex As Exception
		WriteToDebugLog("Compress", ex.Message)
		Return Nothing
	End Try

End Function

RoR Code (Ruby 1.9.2 / Rails 3)

require "base64"
require 'nokogiri'
xml = ActiveSupport::Gzip.decompress(Base64.decode64( ))
xml_doc = Nokogiri::XML(xml) do |config|
	config.noblanks
end
# Zugriff auf Elemente über
xml_doc.xpath()

Evtl. hilfts ja jemandem bei was auch immer.