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("&", "&");
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());
|