FilemakerTurk, AYS Bilişim ve Beyaz Net tarafından desteklenmektedir.
Filemaker Danışmanınız
AYS Bilişim
Mehmet KAYA
 0532 231 07 27
 0216 318 55 80
 mkaya@aysbilisim.net
						

XML Parse Etme

+1 oy
653 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 (41,310 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 (70,020 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 (70,020 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?
...