Kodları lütfen aşağıdaki butonları kullanarak renklendirin. Örnek: <php> echo "Selam Dünya"; </php>
Yardım
karakter kaldı

Php değişkeninden XML okuma

Merhaba arşadaşlar bir eticaret sistemi için bank asyanın sanal posunu kurmaya çalışıyorum kart bilgileri vb. gibi şeyleri post ettikten sonra banka bir değişkende sonucu xml formatlı olarak post ediyor örneğin dönüş $sonuc değişkeni içinde aşağıdaki gibi oluyor


<?xml version="1.0" encoding="utf-8" ?>
- <ePaymentMsg VersionInfo="2.0" TT="Response" RM="Direct" CT="Money">
- <Operation ActionType="Sale">
- <OpData>
<MerchantInfo MerchantId="006102101201800" />
- <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" RPID="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>


bu XML metin içerisinden verileri ayrı ayrı nasıl değişkenlere alabilirim fikri olan varmı şimdiden teşekkürler.
+0
-0
Cevaba KatılıyorumKatılmıyorum
Cevap Yaz Yorum Yaz Arşivime Ekle Takip Et

Doğru Cevap

  • siyahbeyaz adlı üyenin fotoğrafı
    9 yıl önce yazılmış
    472 cevap - 20 soru
    bunu regex ile alabilirsiniz.. ornek vermem gerekirse
    <TrnxCommon TrnxID="edd3539d-e24f-443f-8d9d-611ba04e4236" Protocol="156">
    burayı alayım mesala.
    preg_match_all('#<TrnxCommon TrnxID="(.*?)" Protocol="(.*?)"> #si',$Sonuc,$Trnk);
    
    echo $Trnk[0][1]; //  edd3539d-e24f-443f-8d9d-611ba04e4236 yi verir.
    echo $Trnk[0][2];  // 156 Protokolünü verir..
    
    
    • reelmg adlı üyenin fotoğrafı reelmg
      teşekkürler değişken içinde içinde xml ile beraber xml headerları da döndüğü için simplexml le sonuca ulaşamayınca bende regex kullanarak yaptım fakat belki birinin işine yarar diye simplexml kodlarınıda buraya koyuyorum boyle bu soru için iki farklı cevap alabilir diğer arkadaşlar

      $string = <<<XML
      <A1>
          <A2>
              <A3 deger1="icerik1" deger2="icerik2">1</A3>
          </A2>
      </A1>
      XML;
      
      echo microtime()."<br>";
      $xml = simplexml_load_string($XML1);
      foreach($xml->A2[0]->A3[0]->attributes() as $a => $b) {
          $$a=$b;
      }
      
      echo "deger1 = $icerik1<br>";
      echo "deger2 = $icerik2<br>";
      9 yıl önce yazılmış

Cevaplar

  • sharq adlı üyenin fotoğrafı
    9 yıl önce yazılmış
    115 cevap - 141 soru
    php simpleXml sınıfı olması lazım bi araştır derim
  • mbayraktar adlı üyenin fotoğrafı
    9 yıl önce yazılmış
    20 cevap - 2 soru
    xml siniflarinin acik oldugundan emin olun.

    elimde ki xml okuyucusunu seninkine göre uyarlamaya calistim ama test etmedim.
    bu sekilde istedigin "node" nin degerini alabilirsin.

    	$xml = simplexml_load_file('#URL#'); 
    	
    		foreach ($xml->OpData->children() as $node) {
                           echo 'Position: '.($node->TrnxCommon).'<br/>';
                     }
    
    • reelmg adlı üyenin fotoğrafı reelmg
      ilginize teşşekürler fakat yukarıda da belirttiğim gibi bir dosya yok ortada sadece $sonuc değişkeni var xml metni bu değişkenin içinde geliyor dosya yerine değişken yazıncada çalışmıyor load file xml yerine başka birşey olmase gerek 2 gündür araştıyorum fakat hala çalışan bir örnek bulamadım hep standart xml metinleri için örnek var böyle kendi içinde ="..." şeklinde tanımlanmış veriyi bir türlü çekemedim
      9 yıl önce yazılmış