🙂 İNSANLARIN EN HAYIRLISI INSANLARA FAYDALI OLANDIR 🙂

Ramazan HABER / C# RMOS / XML Okuma XML to Class

1-) C# RMOS - XML Okuma XML to Class

 

DİKKAT XML DE TÜM PROPERTİLERİ STRİNG YAP KESİNNNNNNNNNNNNNNNNNN!!!!!

DİKKAT XML İÇİNDE & İŞARETİ OLMAYACAK !!! ÇÖZÜM xml xmltext.Replace("&", "&");

 

1. YENİ YOL : Bu yol ile ilk önce Json'a dönüştürülür Sonra modele Cast Edilir

 

 

 using System.Xml.Linq;

 using Newtonsoft.Json;

 

 

 string xmlVeri = "<root><element>text</element></root>";

 XDocument xmlDoc = XDocument.Parse(xmlVeri);

 string json = JsonConvert.SerializeXNode(xmlDoc);

 EmlakKatilimModel.Root root = JsonConvert.DeserializeObject<EmlakKatilimModel.Root>(json);

 

 

 

2. DİĞERLERİ

aşağıdaki adrese git xml'ini yapıştır sana C# class'ını verecektir

 

http://xmltocsharp.azurewebsites.net/

2-) Oluşan Class'da en kapsamlı Class'ı bul. Bizim yapacağımız örnekteki en kapsamlı class OtelNetRezervasyonBilgileri olacaktır.

ve aşağıdaki kod gibi çağrılır . İşte bu kadar.

 

1-) C# RMOS - Kullanımı

 

string path = @"C:\Users\Ramazan\Desktop\OTELSNET\142459.xml";

 

OtelNetRezervasyonBilgileri rez = Load_Rezarvasyon(path);

 

public OtelNetRezervasyonBilgileri Load_Rezarvasyon(string path)

        {

            using (var stream = new FileStream(path, FileMode.Open))

            {

                var XML = new XmlSerializer(typeof(OtelNetRezervasyonBilgileri));

                return (OtelNetRezervasyonBilgileri)XML.Deserialize(stream);

            }

        }

 

veya daha dinamik istersen

 

 public T loadXml<T>(string path)

        {

            using (var stream = new FileStream(path, FileMode.Open))

            {

                var XML = new XmlSerializer(typeof(T));

                return (T)XML.Deserialize(stream);

            }

        }

 

kullanımı ise

 

 B2bProductXmlModel.Products model = loadXml<B2bProductXmlModel.Products>(xmlAd);

 

 

1-) C# RMOS - xml stringi class'a çevirir

 

 

result0 = @"<?xml version='1.0'?>

<posnetResponse>

<approved>1</approved>

<respCode></respCode>

 <respText></respText>

 <oosRequestDataResponse>

<data1>AEFE78BFC852867FF57078B723E284D1BD52EED8264C6CBD110A1A9EA5EAA7533D1A8

2EFD614032D686C507738FDCDD2EDD00B22DEFEFE0795DC4674C16C02EBBFEC9DF0F495D5E23BE487A79

8BF8293C7C1D517D9600C96CBFD8816C9D8F8257442906CB9B10D8F1AABFBBD24AA6FB0E5533CDE67B0D

9EA5ED621B91BF6991D5362182302B781241B56E47BAE1E86BC3D5AE7606212126A4E97AFC2</data1>

<data2>69D04861340091B7014B15158CA3C83413031B406F08B3792A0114C9958E6F0F21696

6C5EE32EAEEC7158BFF59DFCB77E20CD625</data2>

 <sign>9998F61E1D0C0FB6EC5203A748124F30</sign>

 </oosRequestDataResponse>

</posnetResponse> ";

 

var XML = new XmlSerializer(typeof(PosnetResponse));PosnetResponse ddd = (PosnetResponse)XML.Deserialize(GenerateStreamFromString(result0));

 

public static Stream GenerateStreamFromString(string s)

        {

            var stream = new MemoryStream();

            var writer = new StreamWriter(stream);

            writer.Write(s);

            writer.Flush();

            stream.Position = 0;

            return stream;

        }

 

 

1.1-) C# RMOS - Kullanımı class to xml

 

 Konaklama konaklama = new Konaklama();

 ...

  XmlDocument xmlDocument = SerializeObjectToXML(konaklama, "asd");

            xmlDocument.InnerXml = xmlDocument.InnerXml.ToString().Replace("version=\"1.0\"", "version=\"1.0\" encoding=\"ISO-8859-9\"");

            xmlDocument.InnerXml = xmlDocument.InnerXml.ToString().Replace("xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"", "");

            xmlDocument.InnerXml = xmlDocument.InnerXml.ToString().Replace("xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\"", "");

 

            xmlDocument.Save("deneme.xml");

 

 

 

 

 

 public static XmlDocument SerializeObjectToXML(object obj, string sElementName)

        {

            XmlSerializer serializer = new XmlSerializer(obj.GetType());

            XmlDocument xmlDoc = new XmlDocument();

            using (MemoryStream ms = new MemoryStream())

            {

 

                serializer.Serialize(ms, obj);

                ms.Position = 0;

                xmlDoc.Load(ms);

            }

 

            return xmlDoc;

        } 

3-) ÖRNEKTEKİ CLASS VE XML AŞAĞIDADIR BAKMASANDA OLUR AMA DENEMEK İÇİN BAKABİLİRSİN.

 

4-) SetNotu.cs

using System.Collections.Generic;

using System.Xml.Serialization;

namespace RM_Otelsnet

{

    // Ramazan HABER 05.07.2018

    //XML TO CLASS C# -> http://xmltocsharp.azurewebsites.net/

    [XmlRoot(ElementName = "SetNotu")]

    public class SetNotu

    {

        [XmlAttribute(AttributeName = "space", Namespace = "http://www.w3.org/XML/1998/namespace")]

        public string Space { get; set; }

    }

 

    [XmlRoot(ElementName = "Rezervasyon")]

    public class Rezervasyon

    {

        [XmlElement(ElementName = "RezervasyonID")]

        public string RezervasyonID { get; set; }

        [XmlElement(ElementName = "OperatorKodu")]

        public string OperatorKodu { get; set; }

        [XmlElement(ElementName = "Katalog")]

        public string Katalog { get; set; }

        [XmlElement(ElementName = "Voucher")]

        public string Voucher { get; set; }

        [XmlElement(ElementName = "Versiyon")]

        public string Versiyon { get; set; }

        [XmlElement(ElementName = "YapılışTarihi")]

        public string YapılışTarihi { get; set; }

        [XmlElement(ElementName = "FirmaID")]

        public string FirmaID { get; set; }

        [XmlElement(ElementName = "BaşlangıçTarihi")]

        public string BaşlangıçTarihi { get; set; }

        [XmlElement(ElementName = "BitişTarihi")]

        public string BitişTarihi { get; set; }

        [XmlElement(ElementName = "GirişTarihi")]

        public string GirişTarihi { get; set; }

        [XmlElement(ElementName = "ÇıkışTarihi")]

        public string ÇıkışTarihi { get; set; }

        [XmlElement(ElementName = "Süre")]

        public string Süre { get; set; }

        [XmlElement(ElementName = "Dil")]

        public string Dil { get; set; }

        [XmlElement(ElementName = "Sıra")]

        public string Sıra { get; set; }

        [XmlElement(ElementName = "MüşteriID")]

        public string MüşteriID { get; set; }

        [XmlElement(ElementName = "Adı")]

        public string Adı { get; set; }

        [XmlElement(ElementName = "Soyadı")]

        public string Soyadı { get; set; }

        [XmlElement(ElementName = "Yaş")]

        public string Yaş { get; set; }

        [XmlElement(ElementName = "Cinsiyet")]

        public string Cinsiyet { get; set; }

        [XmlElement(ElementName = "ÜrünKodu")]

        public string ÜrünKodu { get; set; }

        [XmlElement(ElementName = "ÜniteKodu")]

        public string ÜniteKodu { get; set; }

        [XmlElement(ElementName = "OdaSırası")]

        public string OdaSırası { get; set; }

        [XmlElement(ElementName = "Pansiyon")]

        public string Pansiyon { get; set; }

        [XmlElement(ElementName = "KayıtDurum")]

        public string KayıtDurum { get; set; }

        [XmlElement(ElementName = "RDurumu")]

        public string RDurumu { get; set; }

        [XmlElement(ElementName = "Durumu")]

        public string Durumu { get; set; }

        [XmlElement(ElementName = "ÖzelİstekKodu")]

        public string ÖzelİstekKodu { get; set; }

        [XmlElement(ElementName = "Açıklaması")]

        public string Açıklaması { get; set; }

        [XmlElement(ElementName = "GKYeri")]

        public string GKYeri { get; set; }

        [XmlElement(ElementName = "DKYeri")]

        public string DKYeri { get; set; }

        [XmlElement(ElementName = "SetDurumu")]

        public string SetDurumu { get; set; }

        [XmlElement(ElementName = "SetNotu")]

        public SetNotu SetNotu { get; set; }

        [XmlElement(ElementName = "KonfirmasyonID")]

        public string KonfirmasyonID { get; set; }

        [XmlElement(ElementName = "DeğişiklikSebebi")]

        public string DeğişiklikSebebi { get; set; }

        [XmlElement(ElementName = "DeğişiklikŞekli")]

        public string DeğişiklikŞekli { get; set; }

        [XmlElement(ElementName = "HANotu")]

        public string HANotu { get; set; }

        [XmlElement(ElementName = "KontratID")]

        public string KontratID { get; set; }

        [XmlElement(ElementName = "MÖzelİstekKodu")]

        public string MÖzelİstekKodu { get; set; }

        [XmlElement(ElementName = "MAçıklama")]

        public string MAçıklama { get; set; }

        [XmlElement(ElementName = "Sezon")]

        public string Sezon { get; set; }

        [XmlElement(ElementName = "OdaAçılımı")]

        public string OdaAçılımı { get; set; }

        [XmlElement(ElementName = "VTarihi")]

        public string VTarihi { get; set; }

        [XmlElement(ElementName = "KTarihi")]

        public string KTarihi { get; set; }

        [XmlElement(ElementName = "VSaati")]

        public string VSaati { get; set; }

        [XmlElement(ElementName = "KSaati")]

        public string KSaati { get; set; }

        [XmlElement(ElementName = "GUçuşKodu")]

        public string GUçuşKodu { get; set; }

        [XmlElement(ElementName = "DUçuşKodu")]

        public string DUçuşKodu { get; set; }

        [XmlElement(ElementName = "Açıklama")]

        public string Açıklama { get; set; }

        [XmlElement(ElementName = "EkHizmetler")]

        public string EkHizmetler { get; set; }

        [XmlElement(ElementName = "Pazar")]

        public string Pazar { get; set; }

    }

 

    [XmlRoot(ElementName = "OtelNetRezervasyonBilgileri")]

    public class OtelNetRezervasyonBilgileri

    {

        [XmlElement(ElementName = "Rezervasyon")]

        public List<Rezervasyon> Rezervasyon { get; set; }

    }

}

 

5-) 142459.xml

 

<?xml version="1.0" encoding="UTF-8"?>

<OtelNetRezervasyonBilgileri>

<Rezervasyon>

<RezervasyonID>3191556242096</RezervasyonID>

<OperatorKodu>01OEG</OperatorKodu>

<Katalog>OGE</Katalog>

<Voucher>73564913</Voucher>

<Versiyon>2</Versiyon>

<YapılışTarihi>2018-06-05T00:00:00+03:00</YapılışTarihi>

<FirmaID>49462</FirmaID>

<BaşlangıçTarihi>2018-08-26T00:00:00+03:00</BaşlangıçTarihi>

<BitişTarihi>2018-09-01T00:00:00+03:00</BitişTarihi>

<GirişTarihi>2018-08-26T00:00:00+03:00</GirişTarihi>

<ÇıkışTarihi>2018-09-01T00:00:00+03:00</ÇıkışTarihi>

<Süre>6</Süre>

<Dil>DE</Dil>

<Sıra>6065041</Sıra>

<MüşteriID>1613709</MüşteriID>

<Adı>TAMARA</Adı>

<Soyadı>SCHOUTEDEN</Soyadı>

<Yaş>33</Yaş>

<Cinsiyet>1</Cinsiyet>

<ÜrünKodu>40422</ÜrünKodu>

<ÜniteKodu>A3E</ÜniteKodu>

<OdaSırası>1</OdaSırası>

<Pansiyon>AI</Pansiyon>

<KayıtDurum>1</KayıtDurum>

<RDurumu>1</RDurumu>

<Durumu>1</Durumu>

<ÖzelİstekKodu/>

<Açıklaması>89649-1</Açıklaması>

<GKYeri>CGN</GKYeri>

<DKYeri>AYT</DKYeri>

<SetDurumu>0</SetDurumu>

<SetNotu xml:space="preserve"> </SetNotu>

<KonfirmasyonID>151157</KonfirmasyonID>

<DeğişiklikSebebi>0</DeğişiklikSebebi>

<DeğişiklikŞekli>0</DeğişiklikŞekli>

<HANotu/>

<KontratID>342887</KontratID>

<MÖzelİstekKodu/>

<MAçıklama/>

<Sezon>S18</Sezon>

<OdaAçılımı>#D;#WC;#KA;#BK;#PB;</OdaAçılımı>

<VTarihi>2018-08-26T00:00:00+03:00</VTarihi>

<KTarihi>2018-09-01T00:00:00+03:00</KTarihi>

<VSaati>2018-08-26T08:15:00+03:00</VSaati>

<KSaati>2018-09-01T23:55:00+03:00</KSaati>

<GUçuşKodu>CGNAYT707</GUçuşKodu>

<DUçuşKodu>AYTCGN607</DUçuşKodu>

<Açıklama/>

<EkHizmetler/>

<Pazar>German</Pazar>

</Rezervasyon>

<Rezervasyon>

<RezervasyonID>3191556242096</RezervasyonID>

<OperatorKodu>01OEG</OperatorKodu>

<Katalog>OGE</Katalog>

<Voucher>73564913</Voucher>

<Versiyon>2</Versiyon>

<YapılışTarihi>2018-06-05T00:00:00+03:00</YapılışTarihi>

<FirmaID>49462</FirmaID>

<BaşlangıçTarihi>2018-08-26T00:00:00+03:00</BaşlangıçTarihi>

<BitişTarihi>2018-09-01T00:00:00+03:00</BitişTarihi>

<GirişTarihi>2018-08-26T00:00:00+03:00</GirişTarihi>

<ÇıkışTarihi>2018-09-01T00:00:00+03:00</ÇıkışTarihi>

<Süre>6</Süre>

<Dil>DE</Dil>

<Sıra>6065040</Sıra>

<MüşteriID>1613710</MüşteriID>

<Adı>ELS</Adı>

<Soyadı>ANTONIS</Soyadı>

<Yaş>33</Yaş>

<Cinsiyet>1</Cinsiyet>

<ÜrünKodu>40422</ÜrünKodu>

<ÜniteKodu>A3E</ÜniteKodu>

<OdaSırası>1</OdaSırası>

<Pansiyon>AI</Pansiyon>

<KayıtDurum>1</KayıtDurum>

<RDurumu>1</RDurumu>

<Durumu>1</Durumu>

<ÖzelİstekKodu/>

<Açıklaması>89649-1</Açıklaması>

<GKYeri>CGN</GKYeri>

<DKYeri>AYT</DKYeri>

<SetDurumu>0</SetDurumu>

<SetNotu xml:space="preserve"> </SetNotu>

<KonfirmasyonID>151157</KonfirmasyonID>

<DeğişiklikSebebi>0</DeğişiklikSebebi>

<DeğişiklikŞekli>0</DeğişiklikŞekli>

<HANotu/>

<KontratID>342887</KontratID>

<MÖzelİstekKodu/>

<MAçıklama/>

<Sezon>S18</Sezon>

<OdaAçılımı>#D;#WC;#KA;#BK;#PB;</OdaAçılımı>

<VTarihi>2018-08-26T00:00:00+03:00</VTarihi>

<KTarihi>2018-09-01T00:00:00+03:00</KTarihi>

<VSaati>2018-08-26T08:15:00+03:00</VSaati>

<KSaati>2018-09-01T23:55:00+03:00</KSaati>

<GUçuşKodu>CGNAYT707</GUçuşKodu>

<DUçuşKodu>AYTCGN607</DUçuşKodu>

<Açıklama/>

<EkHizmetler/>

<Pazar>German</Pazar>

</Rezervasyon>

<Rezervasyon>

<RezervasyonID>3191556242096</RezervasyonID>

<OperatorKodu>01OEG</OperatorKodu>

<Katalog>OGE</Katalog>

<Voucher>73564913</Voucher>

<Versiyon>2</Versiyon>

<YapılışTarihi>2018-06-05T00:00:00+03:00</YapılışTarihi>

<FirmaID>49462</FirmaID>

<BaşlangıçTarihi>2018-08-26T00:00:00+03:00</BaşlangıçTarihi>

<BitişTarihi>2018-09-01T00:00:00+03:00</BitişTarihi>

<GirişTarihi>2018-08-26T00:00:00+03:00</GirişTarihi>

<ÇıkışTarihi>2018-09-01T00:00:00+03:00</ÇıkışTarihi>

<Süre>6</Süre>

<Dil>DE</Dil>

<Sıra>6065039</Sıra>

<MüşteriID>1613711</MüşteriID>

<Adı>DANNY</Adı>

<Soyadı>SCHOUTEDEN</Soyadı>

<Yaş>33</Yaş>

<Cinsiyet>0</Cinsiyet>

<ÜrünKodu>40422</ÜrünKodu>

<ÜniteKodu>A3E</ÜniteKodu>

<OdaSırası>1</OdaSırası>

<Pansiyon>AI</Pansiyon>

<KayıtDurum>1</KayıtDurum>

<RDurumu>1</RDurumu>

<Durumu>1</Durumu>

<ÖzelİstekKodu/>

<Açıklaması>89649-1</Açıklaması>

<GKYeri>CGN</GKYeri>

<DKYeri>AYT</DKYeri>

<SetDurumu>0</SetDurumu>

<SetNotu xml:space="preserve"> </SetNotu>

<KonfirmasyonID>151157</KonfirmasyonID>

<DeğişiklikSebebi>0</DeğişiklikSebebi>

<DeğişiklikŞekli>0</DeğişiklikŞekli>

<HANotu/>

<KontratID>342887</KontratID>

<MÖzelİstekKodu/>

<MAçıklama/>

<Sezon>S18</Sezon>

<OdaAçılımı>#D;#WC;#KA;#BK;#PB;</OdaAçılımı>

<VTarihi>2018-08-26T00:00:00+03:00</VTarihi>

<KTarihi>2018-09-01T00:00:00+03:00</KTarihi>

<VSaati>2018-08-26T08:15:00+03:00</VSaati>

<KSaati>2018-09-01T23:55:00+03:00</KSaati>

<GUçuşKodu>CGNAYT707</GUçuşKodu>

<DUçuşKodu>AYTCGN607</DUçuşKodu>

<Açıklama/>

<EkHizmetler/>

<Pazar>German</Pazar>

</Rezervasyon>

</OtelNetRezervasyonBilgileri>

 

 

3. GENERİC CLASS İLE

 

 

    public static T responseXML<T>(string link, object postClass, T getClass)

        {

            HttpWebRequest request = (System.Net.HttpWebRequest)System.Net.WebRequest.Create(link);

 

            System.Xml.Serialization.XmlSerializer serializer = new System.Xml.Serialization.XmlSerializer(postClass.GetType());

 

            XmlWriterSettings settings = new XmlWriterSettings();

            settings.Encoding = new UnicodeEncoding(false, false); // no BOM in a .NET string

            settings.Indent = true;

            settings.OmitXmlDeclaration = true;

 

            StringWriter textWriter = new StringWriter();

            using (XmlWriter xmlWriter = XmlWriter.Create(textWriter, settings))

            {

                serializer.Serialize(xmlWriter, postClass);

            }

            string text = textWriter.ToString();

            byte[] postdatabytes = Encoding.UTF8.GetBytes(text);

            request.Method = "POST";

            request.ContentType = "application/x-www-form-urlencoded";

            request.ContentLength = postdatabytes.Length;

            Stream requeststream = request.GetRequestStream();

            requeststream.Write(postdatabytes, 0, postdatabytes.Length);

            requeststream.Close();

 

            HttpWebResponse resp = (HttpWebResponse)request.GetResponse();

            StreamReader responsereader = new StreamReader(resp.GetResponseStream(), System.Text.Encoding.GetEncoding("utf-8"));//ISO-8859-9

            string responseXML = responsereader.ReadToEnd();

            responseXML = System.Net.WebUtility.HtmlDecode(responseXML).Replace("&", "&amp;");

 

            XmlSerializer serializer1 = new XmlSerializer(typeof(T));

            StringReader reader = new StringReader(responseXML);

            T classes = (T)(serializer1.Deserialize(reader));

 

 

            return classes;

        }

 

 

3. GENERİC CLASS İLE KULLANIMI

 

 string link = "http://www.reseliva.com/siteBase";

 RezervasyonRequest.Request req = new RezervasyonRequest.Request();

 var odalist = responseXML(link, req, new ReselivaOda.OTAProductList());

 

 

 

 2023 Haziran 12 Pazartesi
 684