Tag: XmlDocument

Biztalk Error : “Cannot locate document specification because multiple schemas matched the message type” ve Çözümü

Haziran 2nd, 2010

Biztalk Server schemaları root node name + namespace mantığıyla ayırt eder. Eğer İlk node un ismi ve namespace in birleşimi aynı olan birden fazla şemanız mevcutsa bu hatayı alırsınız. Yani Biztalk bu yapıya sahip bir mesaj aldığında hangi şemayı kullanacağını bilemez/karar veremez.

üç tane çözümü mevcuttur (benim bildiğim :))

  1. Aynı yapıya sahip iki şema zaten olmamalıysa, yani yanlışlıkla olmuşsa, gereksiz şemayı silip yeniden deploy edersiniz.
  2. Yanlışlık yoksa ve şemanın ikisini de kullanmanız gerekli ise;
    1. Source mesajın şemasını değiştirebiliyorsanız, yani xml dosyasını üreten programda değişiklik yapabilirseniz, programdan xmlns yi veya root node un ismini değiştirmeniz yeterli olacaktır.c# ile XMLDocument içindeki namespace i (xmlns) aşağıdaki gibi değiştirebilirsiniz;

      XmlDocument xmlDocument = new XmlDocument();
      xmlDocument.Load(“dosyaadi veya var olan XmlDocument kullanılabilir”);
      XmlAttribute attributeNode = xmlDocument.CreateAttribute(“xmlns”, “”, “http://blablabla”);
      xmlDocument.DocumentElement.SetAttributeNode(attri buteNode);

    2. Yukarıdaki çözüm işinize yaramazsa ki kaynak üreten program elinizde değil ise yaramaz. O zaman Biztalk tarafında aşağıdaki özelliklere sahip bir Pipeline üretiyoruz. Daha sonra Receive Location’ınımız pipelinını, yeni yaptığımız pipeline ile değiştiriyoruz. Böylece Biztalk Server, yaratılan pipeline sayesinde hangi schemanın kullanılacağına karar verebilir.Yeni yaptığımız pipeline a bir adet XML Disassembler eklenir.XML Disassembler ın Allow unrecognized messages özelliği true yapılır. Document schemas dan kullanılmak istenilen schema seçilir.

    3. Daha sonra proje deploy edilir ve kullanılacak olan receive locationdan Receive Pipeline olarak yeni yarattığımız pipeline seçilir.

      Test ettiğinizde problemin çözülmüş olduğunu görürsünüz.

Tags: , , , , , , , , , , , , , , , , , ,
Posted in BizTalk | No Comments »

Web Servis Kullanarak Güncel Hava Durumunun Gösterilmesi

Kasım 2nd, 2008

Bu yazıda kısaca, bir windows applicationda, web servisten alınan hava durumu bilgilerinin nasıl gösteriminin yapılabileceğini anlatmaya çalışacağım.

İlk önce boş bir windows application oluşturmamız gerekmekte. Şekildeki gibi Proje ismine “Hava Durumu” diyebilirsiniz.
Yeni Proje Oluştur

Daha sonra oluşturduğumuz projeye aşağıdaki bilgilere sahip bir web servisi eklememiz gerekmekte. Hava durumu dışında, “http://www.webservicex.net” adresinde yaklaşık olarak 30-40 adet ücretsiz web servisi hizmeti bulunmakta. Bunların arasında IP bilgileri, Ülke bilgileri, Birim Çevrimi gibi çok fazla işe yarayan servisler bulunmakta.

URL : “http://www.webservicex.net/globalweather.asmx?wsdl

Web Service Reference Name : “HavaDurumuWebService”

Web Service

Daha sonra aşağıdaki gibi bir ekran görüntüsü hazırlamanız gerekmekte.

Form Tasarımı

Formun “OnLoad” metoduna

private void Form1_Load(object sender, EventArgs e)
{

HavaDurumuWebService.GlobalWeather havaDurumu = new Hava_Durumu.HavaDurumuWebService.GlobalWeather();
string xmlSehirler = havaDurumu.GetCitiesByCountry(“Turkey”);

XmlDocument sehirler = new XmlDocument();
sehirler.LoadXml(xmlSehirler);

XmlNodeList sehirNodes = sehirler.SelectNodes(“//City”);
foreach (XmlNode xNode in sehirNodes)
{

comboBox1.Items.Add(xNode.InnerText);

}

}

Comboboxın SelectedIndexChanged Eventına ise

private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
string secilenSehir = comboBox1.SelectedItem.ToString();
HavaDurumuWebService.GlobalWeather havaDurumu = new      Hava_Durumu.HavaDurumuWebService.GlobalWeather();
string xmlHavaDurumu = havaDurumu.GetWeather(secilenSehir, “Turkey”);

XmlDocument xmlHava = new XmlDocument();
xmlHava.LoadXml(xmlHavaDurumu);

XmlNode xTime = xmlHava.SelectSingleNode(“//Time”);
label4.Text = xTime.InnerText;
XmlNode xTemperature = xmlHava.SelectSingleNode(“//Temperature”);
label5.Text = xTemperature.InnerText;
}

kodlarınız yazarsak, programımız aşağıdaki resimlerde görüldüğü şekilde çalışacaktır.

Çalışan Hal

Çalışan Hal 2

Çalışan Hal 3

Programın Source Codunu buradan indirebilirsiniz.

Gelen Aramalar:

  • hava durumu web servisi
  • c# web servis kullanımı
  • hava durumu web servis
  • c# hava durumu cekme
  • meteoroloji web servis
  • hava durumu web service
  • c# hava durumu
  • hava durumu web servisleri
  • c# web service kullanımı
  • hava durumu servisi

Tags: , , , , , ,
Posted in .NeT 2008, Bilgisayar | 12 Comments »

DataTable to XMLDocument

Ekim 22nd, 2008

Diyelim ki elinizde bir iş için hazırlanmış bir DataTable var. Siz bundan hoşlanmadınız ve XMLDocument veya XML e çevirmek istediniz. Yapmanız gereken :


public XmlDocument DataTableToXMLDocument(DataTable dt)
{
DataSet ds = new DataSet();
ds.Tables.Add(dt);
ds.DataSetName = "rootNode";
ds.Namespace = "NameSpace";
XmlDocument xd = new XmlDocument();
xd.LoadXml(ds.GetXml());
return xd;
}

ds.DataSetName’i root Node’u belirlemek için,
ds.Namespace’yi XML’in Namespacesini belirlemek için kullanabilirsiniz.

Tags: , ,
Posted in .NeT 2008 | 1 Comment »