none
Dinamik xml Oluşturma ? RRS feed

  • Soru

  • Arkadaşlar aşağıda vereceğim örneği code behind bölümünde dinamik olarak oluşturulacak xml dökümanına nasıl aktarabilir, görüntüleyebilir ve özelliklerine ulaşabilirim ?

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

    - <ePaymentMsg VersionInfo="2.0" TT="Response" RM="Direct" CT="Money"> 

     - <Operation ActionType="Sale"> 

     - <OpData> 

     <MerchantInfo MerchantId="006100200140200" /> 

     - <ActionInfo> 

     <DateInfo LocalDate="20110708" LocalTime="1719" /> 

     - <TrnxCommon TrnxID="edd3539d-e24f-443f-8d9d-611ba04e4236" Protocol="156"> 

     <AmountInfo Currency="949" Amount="1.00" /> 

     </TrnxCommon> 

     <POSTrnxID LIDM="111111111111111111111111111111" 

    RRPID="111111111111111111111111111111" /> 

     <HostResponse AuthCode="462192" HostRefNo="11111111" HostDate="0708" 

    ResultCode="0000" /> 

     <BatchInfo BatchId="3" Stan="120" /> 

     - <PaymentTypeInfo> 

     <InstallmentInfo NumberOfInstallments="0" /> 

     </PaymentTypeInfo> 

     </ActionInfo> 

     <CustomData /> 

     </OpData> 

     </Operation> 

    </ePaymentMsg> 

    14 Şubat 2014 Cuma 06:37

Yanıtlar

  • xml dosyada mı? (: Neden böyle bişey gerekti ki?

    Öyleyse;

    XDocument xd = XDocument.Load(Server.MapPath("pos.xml"));
    
    ya da
    
    XDocument xd = XDocument.Parse(File.ReadAllText(Server.MapPath("pos.xml")));

    şeklinde yükleyin.


    e-mail: onay[nokta]yalciner[at]hotmail[nokta]com
    MCC

    14 Şubat 2014 Cuma 10:01
    Moderatör

Tüm Yanıtlar

  • Linq2Xml ile yapabilirsin;

    var xd = new XDocument(new XElement("ePaymentMsg", 
        new XAttribute("VersionInfo", "2.0"), 
        new XAttribute("TT", "Response"), 
        new XAttribute("RM", "Direct"), 
        new XAttribute("CT", "Money"), 
        new XElement("Operation", new XAttribute("ActionType", "Sale")),
        new XElement("OpData",
                        new XElement("MerchantInfo", new XAttribute("MerchantId", "006100200140200") 
                        .
                        .
                        .
    

    gibi


    e-mail: onay[nokta]yalciner[at]hotmail[nokta]com
    MCC

    14 Şubat 2014 Cuma 07:05
    Moderatör
  • Teşekkürler.. Peki verdiğiniz örnekteki 

    "MerchantId", "006100200140200" gibi sabit olan bölüme benim yukarda verdiğim örnekteki xml

    deki MerchantId="006100200140200" bölümünü dinamik olarak nasıl ekletebilirim ? yani o xmldeki bölümleri nasıl

    ekleyebilirim sabit değerli yerlere ? sadece 1 tane örnek verseniz yeterli olur..


    Web Developer

    14 Şubat 2014 Cuma 08:43
  • sorunuzu anlamadım, benim verdiğim örnek , verdiğiniz xml i sıfırdan oluşturuyor. Sabit değerlerin yerine değişkenlerinizi koyabilirsiniz.

    new XElement("MerchantInfo", new XAttribute("MerchantId", textBox1.Text) 
    ya da 
    new XElement("MerchantInfo", new XAttribute("MerchantId", databaseDenGetlen.BirAlan) 

    gibi

    Bu xml sanal pos ile alakalı gibi algıladım. Bu işleri yapacak bir servis, dll vs yok mu? Normalde bunlarla uğraşmamanız gerekiyor.


    e-mail: onay[nokta]yalciner[at]hotmail[nokta]com
    MCC

    14 Şubat 2014 Cuma 08:50
    Moderatör
  • Hocam soru şu bankaya işlem gönderiliyor ve banka geriye yukarda ilk yazdığım xml veriyi döndürüyor..

    Benim bu xml i dinamik olarak oluşturacağım bir xml dosyasına yükleyip oluşan dinamik xml dökümanındaki <hostresponse authcode="462192" hostdate="0708" hostrefno="11111111" resultcode="0000">satırındaki ResultCode="0000" bölümünün döndürdüğü değeri (0000) elde etmem gerekiyor.. İnşaAllah derdimi anlatabilmişimdir :) eksik bilgi vermişim..</hostresponse>


    Web Developer

    14 Şubat 2014 Cuma 08:57
  • (: dinamik kelimesi yanlış algılamama neden oluyor. Sen yeni bir doc oluşturmak istemiyorsun, var olan doc'un bir attribute'unu okumak istiyorsun;

    XDocument xd = XDocument.Parse(bankadanGelenXmlMetni);
    string resultCode = xd.Descandants("hostresponse").First().Attributes("resultcode ").First().Value;
    

    şeklinde alabilirsin.


    e-mail: onay[nokta]yalciner[at]hotmail[nokta]com
    MCC

    14 Şubat 2014 Cuma 09:05
    Moderatör
  • Hocam dediğini yaptım bu seferde şöyle bir hata aldım..

    Kök düzeyindeki veriler geçersiz. Satır 1, konum 1.

    Açıklama: Geçerli web isteği yürütülürken işlenmemiş özel durum oluştu. Lütfen hata ve kod içinde kaynaklandığı yer hakkında daha fazla bilgi almak için yığın izlemesini gözden geçirin. 

    Özel Durum Ayrıntıları: System.Xml.XmlException: Kök düzeyindeki veriler geçersiz. Satır 1, konum 1.

    Kaynak Hatası: 

    Satır 21: xdd.Load(Server.MapPath("pos.xml")); Satır 22: //var kit = xdd.GetElementsByTagName("hostresponse")[0].ChildNodes[0].Value; Satır 23: XDocument xd = XDocument.Parse(Server.MapPath("pos.xml")); Satır 24: string resultCode = xd.Descendants("hostresponse").First().Attributes("resultcode ").First().Value;

    Label1.Text = resultCode.ToString();


    Web Developer

    14 Şubat 2014 Cuma 09:25
  • xml dosyada mı? (: Neden böyle bişey gerekti ki?

    Öyleyse;

    XDocument xd = XDocument.Load(Server.MapPath("pos.xml"));
    
    ya da
    
    XDocument xd = XDocument.Parse(File.ReadAllText(Server.MapPath("pos.xml")));

    şeklinde yükleyin.


    e-mail: onay[nokta]yalciner[at]hotmail[nokta]com
    MCC

    14 Şubat 2014 Cuma 10:01
    Moderatör
  • localde test için dönen cevabı gerçek xml e yapıştırarak oluşturduğum pos.xml dosyasındaki resultcode bölümünü elde ettim bu şekilde..

    Yalnız sunucuda bu sabit xml yerine bankadan dönen kod ile test etmeye çalışırken hata alıyorum..

    Kodlar :

    protected void Button1_Click(object sender, EventArgs e)
        {
            string request = string.Empty;
            string response = string.Empty;
            request = CreateSaleRequest();
            response = Send(request);
            //XDocument xd = XDocument.Load(response.ToString());
            XDocument xd = XDocument.Parse(File.ReadAllText(response));
            string resultCode = xd.Descendants("hostresponse").First().Attributes("resultcode").First().Value;
            if (resultCode == "0000") Label1.Text = "İşlem Başarılı.." + resultCode;
            else if (resultCode == "0") Label1.Text = "İşlem Başarılı.." + resultCode;
            else Label1.Text = "İşlem Başarısız !.." + resultCode;
        }

    Hata şöyle;

    Illegal characters in path.

    Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. 

    Exception Details: System.ArgumentException: Illegal characters in path.

    Source Error: 
    Line 27:         response = Send(request);
    Line 28:         //XDocument xd = XDocument.Load(response.ToString());
    Line 29:         XDocument xd = XDocument.Parse(File.ReadAllText(response));
    Line 30:         string resultCode = xd.Descendants("hostresponse").First().Attributes("resultcode").First().Value;
    Line 31:         if (resultCode == "0000") Label1.Text = "İşlem Başarılı.." + resultCode;


    Web Developer

    14 Şubat 2014 Cuma 11:58
  • Birazcık dikkat lütfen (:

    XDocument xd = XDocument.Parse(response);


    e-mail: onay[nokta]yalciner[at]hotmail[nokta]com
    MCC

    14 Şubat 2014 Cuma 12:48
    Moderatör