Forum

SOAP Gelen Verinin ...
 
Bildirimler
Hepsini Temizle

[Çözüldü] SOAP Gelen Verinin Parse Edilmesi

Halil İbrahim AYHAN
(@ibrahimayhan)
Üye

Merhabalar ÇözümPark ve Ekibi,
Kullandığımız HES Sorgulama Servisleri SOAP Request İle Veri Alınmaktadır,
SOAPResult Üzerinden Gelen Sonuç Aşağıdaki Gibidir,

Burada Benim İstediğim Durum Result İçerisinde Gelen Veriden Aşağıdaki Nesnelerinin Karşılığını Nasıl Parse Edebileceğimdir,

Sizlerden Bu Konu Hakkında Bilgi Beklemekteyim, İyi Çalışmalar...

expiration_date
current_health_status
masked_identity_number
masked_firstname
masked_lastname

<?xml version="1.0" encoding="UTF-8"?><SOAP-ENV:Envelope xmlns//schemas.xmlsoap.org/soap/envelope/" xmlns//www.w3.org/2001/XMLSchema" xmlns//www.w3.org/2001/XMLSchema-instance" xmlns//schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><Servis5001Response xmlns="urn:TobbHes"><Sonuc xmlns="">[{&quot;Durum&quot;&quot;Servis5001&quot;}]</Sonuc><Veri xmlns="">{&quot;expiration_date&quot;46.776Z&quot;,&quot;current_health_status&quot;&quot;*****564&quot;,&quot;masked_firstname&quot;:&quot;HA* İB*&quot;,&quot;masked_lastname&quot;:&quot;AY* &quot;}</Veri></Servis5001Response></SOAP-ENV:Body></SOAP-ENV:Envelope>

*********************************************************************

Test Amaçlı Gelen Veriyi JsonConvert Ettiğimde Aşağıdaki Gibi Olmuşmaktadır,

{"?xml""1.0","@encoding"//schemas.xmlsoap.org/soap/envelope/","@xmlns//www.w3.org/2001/XMLSchema","@xmlns//www.w3.org/2001/XMLSchema-instance","@xmlns//schemas.xmlsoap.org/soap/encoding/","SOAP-ENV46.776Z\",\"current_health_status\"\"**564\",\"masked_firstname\":\"HA* İB*\",\"masked_lastname\":\"AY* \"}"}}}}}
Alıntı
Konu başlatıcı Gönderildi : 26/12/2020 08:45
Konu Etiketleri

Sait ORHAN
(@saitorhan)
Üye

Merhaba,

Gelen Xml verisi içerisinden <Veri> alanının değerini bir string değere atadıktan sonra aşağıdaki yolu izleyerek istenen değerler alınabilir. Verileri strveriler değişkenine atadığımızı farzedelim.

 

1. Belirttiğiniz özellikler "," ile birbirinden ayrılmış durumda. Bundan dolayı strveriler değişkenini "," değerine göre pars edersek sonuçta elimizde istediğiniz değerleri içeren bir dizi olacaktır.

string[] degerler = strveriler.Split(',');

 

2. Dönen bu degerler dizisinin her bir elemanının içerisinde de ":" ile birbirinden ayrılmış anahtar değer verisi var. Burada da sıralar sabit olduğundan aşağıdaki şekilde değerler alınabilir.

 

expiration_date = degerler[0].Split(':')[1];
current_health_status = degerler[1].Split(':')[1];
masked_identity_number = degerler[2].Split(':')[1];
masked_firstname = degerler[3].Split(':')[1];
masked_lastname = degerler[4].Split(':')[1];

---------
Sait ORHAN
Bilgisayar Mühendisi
Web: http://saitorhan.com

CevapAlıntı
Gönderildi : 26/12/2020 09:06

Halil İbrahim AYHAN
(@ibrahimayhan)
Üye

@saitorhan Merhabalar Sait Bey, Geri Dönüşünüz İçin Teşekkür Ediyorum,
Dize Olarak Aldığımda Bazı Alanlar Karşılığı null Gelme Durumu Görülmüştür,

Dize Number İle Bu Durum Yapıldığında Proje Catch Bloguna Almaktadır,

CevapAlıntı
Konu başlatıcı Gönderildi : 26/12/2020 09:16

Halil İbrahim AYHAN
(@ibrahimayhan)
Üye

Merhabalar Yaşadığım Durumu Aşağıdaki Şekilde Çözümledim,

[{"Durum"46.776Z","current_health_status""*****564","masked_firstname":"HA* İB*","masked_lastname":"AY* "}

Gelen SOAP Result Yukarıdaki Gibiydi,

XmlDocument XMLDCMNT = new XmlDocument();
XMLDCMNT.LoadXml(soapResult);
var jsonText = JsonConvert.SerializeXmlNode(XMLDCMNT.ChildNodes[1].ChildNodes[0].ChildNodes[0].ChildNodes[1]);

LoadXML İle Veri Çevrildi ve Sonrasında SerializeXmlNode İle Verimiz ChildNodes İçerisine Ayrılmıştır.

XmlDocument doc = (XmlDocument)JsonConvert.DeserializeXmlNode(jsonText);

Oluşan jsonText Verimiz DeserializeXmlNode İle Convert Edilmiştir,

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace TOBBHesKoduSorgulama
{
public class HESResult
{
public DateTime expiration_date { get; set; }
public string current_health_status { get; set; }
public string masked_identity_number { get; set; }
public string masked_firstname { get; set; }
public string masked_lastname { get; set; }
}
}

Yukarıdaki Gibi Class Oluşturdum ve Gelen Verimiz Artık doc.InnerText İçerisinden Ayrılmış Durumdadır.

{"expiration_date"46.776Z","current_health_status""*****564","masked_firstname":"HA* İB*","masked_lastname":"AY* "}

Veri Json Türünde Olduğu İçin Artık Convert Sağlayabilirim 🙂

HESResult JsonVeri = JsonConvert.DeserializeObject(doc.InnerText);

ve Sonuç 🙂

image
CevapAlıntı
Konu başlatıcı Gönderildi : 26/12/2020 09:23

Hakan Uzuner
(@hakanuzuner)
Kıdemli Üye Yönetici

Geri dönüş ve bilgi için teşekkürler.

Danışman - ITSTACK Bilgi Sistemleri
****************************************************************
Probleminiz Çözüldüğünde Sonucu Burada Paylaşırsanız.
Sizde Aynı Problemi Yaşayanlar İçin Yardım Etmiş Olursunuz.
Eğer sorununuz çözüldü ise lütfen "çözüldü" olarak işaretlerseniz diğer üyeler için çok büyük kolaylık sağlayacaktır.
*****************************************************************

CevapAlıntı
Gönderildi : 26/12/2020 12:58

Sait ORHAN
(@saitorhan)
Üye

@ibrahimayhan Paylaşımınız için teşekkür ederim.

---------
Sait ORHAN
Bilgisayar Mühendisi
Web: http://saitorhan.com

CevapAlıntı
Gönderildi : 26/12/2020 13:03

Paylaş: