FilemakerTurk, AYS Bilişim ve Beyaz.net tarafından desteklenmektedir.
Filemakerturk.com a Hoş geldiniz. Mehmet KAYA 0532 231 07 27
Filemaker Lisans İhtiyacınız için FilemakerTürk Yönetimi ile iletişime geçin
 
Alakalı Siteler:

AYS Bilişim


Cabitaş


FMK Solutions | Maatwerk Applicaties
 

XML Parse Etme

+1 oy
181 kez görüntülendi

FileMaker içerisinde web servislerinden gelen XML bilgilerini parse ederek direkt düğümlerdeki veriye ulaşabileceğim bir hazır fonksiyon, betik veya plugin olarak XML kütüphanesi var mıdır?

Servis isteklerini BaseElements pluginini kullanarak BE_HTTP_POST ile yapıyorum ve elime HTTP cevabı şeklinde bir xml geçiyor. Bunu kolay yoldan parse etmek istiyorum.

Teşekkürler.

Gelen Örnek XML şu şekilde:

Filemaker alanları transactionmodel içerisindeki her bir düğümdeki alanlardır.

<PaymentSystemsResponseModelOfListOfStatementModel xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns="http://boa.net/boa.net/BOA.Integration.PaymentSystems/Service">

  <Value>

    <StatementModel>

      <AccountNumber>1</AccountNumber>

      <AccountSuffix>3</AccountSuffix>

      <Balance>7</Balance>

      <TransactionList>

        <TransactionModel>

          <Amount>1</Amount>

          <TranDate>2015-01-01T00:00:00</TranDate>

        </TransactionModel>

      </TransactionList>

    </StatementModel>

  </Value>

</PaymentSystemsResponseModelOfListOfStatementModel>

9, Ekim, 2015 Scripts kategorisinde serkanbayrak (23,520 puan) tarafından soruldu
9, Ekim, 2015 serkanbayrak tarafından düzenlendi

2 Cevaplar

+1 oy
 
En İyi Cevap

Buraya bir örnek ekledim.

 

Uyarı: <PaymentSystemsResponseModelOfListOfStatementModel xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns="http://boa.net/boa.net/BOA.Integration.PaymentSystems/Service"> satırında syntax veya benzeri bir problem var.

9, Ekim, 2015 Recep Güney (55,930 puan) tarafından cevaplandı
12, Ekim, 2015 serkanbayrak tarafından seçilmiş
Örnek için teşekkürler, değişen xml'lere göre kendim xslt üretebilmem için, bunu nasıl yaptığınızı da açıklar mısınız? Bir programı mı var? Bir formülü mü var?

Teşekkürler.
HTML dili gibi bunu da öğrenerek, gelen XML ağaç yapısı ve içiden çekeceğiniz dataya göre kendiniz oluşturuyorsunuz.

Aşağıdaki kaynaklardan yararlanabilirsiniz.
http://www.w3schools.com/xsl/default.asp
http://bluefeathergroup.com/blog/importing-xml-data-into-filemaker-using-xslt-xsl-style-sheets/
+1 oy
Geri dönen xml dökümanına göre hazırlayacağınız bir xslt şablonu ile import edebilirsiniz.

xml dökümanını ve import edeceğiniz değer ve filemakerdaki alan karşılıklarını yollarsanız yardımcı olabilirim.
9, Ekim, 2015 Recep Güney (55,930 puan) tarafından cevaplandı
Cevap için teşekkürler, soruyu güncelledim.
az müsade, 1 saate kadar bakmış olurum.
Recep bey,

Bu XML ve XLST benimde malesef pek fazla bir bilgiye sahip olmadigim konular.
Bir cok veri alip vermelerde genelde XML den faydalanilmakta. Bende bir cok kac cozumlemelerimde XML den faydalandim. Ancak bunlarda xlst kullanmam gerekmemisti.

Simdi normal 5-10 kayit iceren ve 3-5 alanlarin export isleminde xlst olusturmaya calisiyorum.

Bu islemi oncelikle Export ederek denemeye calisiyorum ama nedense icerik hep bos cikiyor.

Ornek xlst dosyamin iceri su sekilde.

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
      <xsl:template match="/*">
            
            <FMPXMLRESULT xmlns="http://www.filemaker.com/fmpxmlresult">
                  <ERRORCODE>0</ERRORCODE>
                  <PRODUCT BUILD="" NAME="" VERSION=""/>
                  <DATABASE DATEFORMAT="" LAYOUT="" NAME="mdm" RECORDS="{count(/*/RECORD)}" TIMEFORMAT=""/>
                  
                  <METADATA>
                        <FIELD EMPTYOK="YES" MAXREPEAT="1" NAME="Amount" TYPE="NUMBER" />
                        <FIELD EMPTYOK="YES" MAXREPEAT="1" NAME="TranDate" TYPE="TEXT" />
                        <FIELD EMPTYOK="YES" MAXREPEAT="1" NAME="ID" TYPE="TEXT" />
                  </METADATA>
                  
                  <RESULTSET>
                  <xsl:attribute name="FOUND"><xsl:value-of select="count(/*/RECORD)"/></xsl:attribute>
                  <xsl:for-each select="/*/RECORD">
                        <ROW MODID="0" RECORDID="0">
                              <xsl:for-each select=".">
                              <COL>
                                    <DATA>
                                          <xsl:value-of select="Amount"/>
                                    </DATA>
                              </COL>
                              <COL>
                                    <DATA>
                                          <xsl:value-of select="TranDate"/>
                                    </DATA>
                              </COL>
                              <COL>
                                    <DATA>
                                          <xsl:value-of select="ID"/>
                                    </DATA>
                              </COL>
                              </xsl:for-each>
                        </ROW>
                  </xsl:for-each>
                  </RESULTSET>
            </FMPXMLRESULT>            
      </xsl:template>
</xsl:stylesheet>

Bu xlst ile yapilan xml dosya icerisinde verileri goremiyorum.
Hamit bey, xslt şablonunuzda ve grammer kullanımınızda hatalar var.
Bana özelden ulaşır mısınız?
...