Özellik ikonu

XPath

İndirme izni yok

Genel Bakış

XPath (XML Path Language), bir XML belgesindeki öğelere, özniteliklere ve metinlere yol ifadesiyle ulaşmayı sağlayan sorgu dilidir. Excel, XML verisini hücrelere eşlerken ve FILTERXML işlevinde bu dili kullanır. XPath bilirseniz XML içindeki belirli bir değeri doğrudan hücreye çekebilirsiniz.

Temel söz dizimi​

XPath, bir klasör yolu gibi okunur: kökten başlar, alt öğelere doğru ilerler. Excel'in desteklediği sürüm XPath 1.0'dır. Sık kullanılan ifadeler şunlardır:
  • / (eğik çizgi): Kökten başlayarak adım adım ilerler. Örneğin /siparis/urun, kök siparis öğesinin altındaki urun öğesini seçer.
  • // (çift eğik çizgi): Belgenin herhangi bir yerindeki öğeyi bulur. //urun, konumu ne olursa olsun tüm urun öğelerini seçer.
  • @ (öznitelik): Öğenin özniteliğini seçer. //kisi/@sehir, kisi öğelerinin sehir özniteliklerini verir.
  • * (yıldız): Herhangi bir öğe adının yerine geçer.
  • . ve .. (nokta): Geçerli öğeyi ve üst öğeyi gösterir.
  • text(): Öğenin metin içeriğini seçer.
  • Koşul (köşeli parantez içinde): Öğe adının hemen ardından köşeli parantez içine sıra numarası ya da koşul yazarak seçimi daraltırsınız. Örneğin kisi öğesinden sonra 2 yazarsanız ikinci kisi öğesi, @sehir değerini karşılaştırırsanız belirli bir şehre ait öğe seçilir. Bu kullanım örnekler bölümünde uygulamalı gösterilmiştir.
  • count(): Seçilen öğe sayısını döndürür.
XPath büyük/küçük harfe duyarlıdır: Urun ile urun farklı öğelerdir.

Excel'de XPath nerede kullanılır​

Excel'de XPath iki yerde karşınıza çıkar:
  • FILTERXML işlevi: Hücredeki ya da başka bir işlevin ürettiği XML metninden, verdiğiniz XPath ifadesine uyan değeri çeker. Türkçe Excel'de adı XMLFİLTRELE'dir.
  • XML eşlemeleri: Geliştirici > Kaynak (Developer > Source) görev bölmesinde XML şemasındaki öğeleri hücrelere sürükleyerek eşlersiniz. Excel her eşlemeyi arka planda öğenin yolu (XPath) ile tutar. Geliştirici sekmesi görünmüyorsa Dosya > Seçenekler > Şeridi Özelleştir (File > Options > Customize Ribbon) yolundan açın.
  • XML'den veri alma: Veri > Veri Al > Dosyadan > XML'den (Data > Get Data > From File > From XML) ile bir XML dosyasını Power Query üzerinden tablo olarak yükleyebilirsiniz; bu yolda XPath yazmanız gerekmez.

FILTERXML ile kullanım​

FILTERXML işlevinin söz dizimi şöyledir:
Excel formülü
=XMLFİLTRELE(xml; xpath)
=FILTERXML(xml, xpath)
İlk bağımsız değişken geçerli bir XML metni (genellikle bir hücre başvurusu), ikincisi XPath ifadesidir. İfade tek bir düğüm bulursa tek değer, birden çok düğüm bulursa değer dizisi döner. Microsoft 365 ve Excel 2021'de sonuçlar alt hücrelere taşar; eski sürümlerde INDEX gibi bir işlevle tek tek almanız gerekir. Aşağıdaki adımlar işlevi kullanmanın özetidir:
  • 1. Adım: XML metnini bir hücreye yazın ya da yapıştırın.
  • 2. Adım: XPath ifadesini ayrı bir hücreye yazın; böylece ifadeyi kolayca değiştirebilirsiniz.
  • 3. Adım: FILTERXML ile iki hücreye başvurun.
  • 4. Adım: Hata alırsanız XML'in kapanış etiketlerini ve ifadedeki harf büyüklüğünü denetleyin.

1. Öğe değerini çekme​

A sütununa tek satırlık bir sipariş XML'i, B sütununa XPath ifadelerini yazın. C sütununda FILTERXML ile ifadeye uyan değeri alın. Not: bu örnek Windows için Excel'de çalışır.
XPath
Formülünü incelemek için bir hücre seçin.
ABC
1XMLXPathSonuç
2<siparis><urun>Defter</urun><adet>12</adet><sehir>Ankara</sehir></siparis>//urunDefter
3<siparis><urun>Defter</urun><adet>12</adet><sehir>Ankara</sehir></siparis>/siparis/adet12
4<siparis><urun>Defter</urun><adet>12</adet><sehir>Ankara</sehir></siparis>//sehirAnkara
Sipariş XMLExcelDepo v1.0.0
C2 hücresi urun öğesinin metnini (Defter), C3 hücresi adet öğesinin değerini (12), C4 hücresi sehir öğesinin metnini (Ankara) döndürür. XPath ifadesini değiştirdiğinizde sonuç hemen güncellenir.

2. Öznitelik, sıra ve koşul​

A sütunundaki XML'de üç kisi öğesi var ve her birinin sehir özniteliği bulunuyor. B sütunundaki ifadeler sırayla ilk öğeyi, özniteliği, ikinci öğeyi ve koşula uyan öğeyi seçer; son ifade ise öğe sayısını almayı dener. C sütununa FILTERXML formüllerini yazın.
XPath
Formülünü incelemek için bir hücre seçin.
ABC
1XMLXPathSonuç
2<liste><kisi sehir="İzmir">Ayşe</kisi><kisi sehir="Bursa">Mehmet</kisi><kisi sehir="Konya">Zeynep</kisi></liste>//kisiAyşe
3<liste><kisi sehir="İzmir">Ayşe</kisi><kisi sehir="Bursa">Mehmet</kisi><kisi sehir="Konya">Zeynep</kisi></liste>//kisi/@sehirKonya
4<liste><kisi sehir="İzmir">Ayşe</kisi><kisi sehir="Bursa">Mehmet</kisi><kisi sehir="Konya">Zeynep</kisi></liste>//kisi(2)Mehmet
5<liste><kisi sehir="İzmir">Ayşe</kisi><kisi sehir="Bursa">Mehmet</kisi><kisi sehir="Konya">Zeynep</kisi></liste>//kisi(@sehir='Konya')Zeynep
6<liste><kisi sehir="İzmir">Ayşe</kisi><kisi sehir="Bursa">Mehmet</kisi><kisi sehir="Konya">Zeynep</kisi></liste>count(//kisi)#DEĞER!
Kişi ListesiExcelDepo v1.0.0
C2 hücresi birinci kisi öğesini (Ayşe), C3 hücresi üçüncü sehir özniteliğini (Konya) verir. C4 sıra numarasıyla ikinci öğeyi (Mehmet), C5 ise sehir değeri Konya olan öğeyi (Zeynep) seçer. C6 hücresindeki count ifadesi öğe sayısını getirmez; FILTERXML bu ifade için sayı döndürmez ve hücrede #DEĞER! hatası görünür. Çok sonuç dönen ifadelerde INDEX ile istediğiniz sıradaki değeri almak, eski Excel sürümlerinde de çalışır.

3. Katalogdan tablo oluşturma​

A2 hücresine üç ürünlü bir katalog XML'i yazın. B sütununa 1, 2, 3 sıra numaralarını girin. C sütununda ürün adlarını, D sütununda fiyatları öznitelik yolundan çekin. D5 hücresinde fiyatların toplamını alın.
XPath
Formülünü incelemek için bir hücre seçin.
ABCD
1XMLSıraÜrünFiyat
2<katalog><urun ad="Defter" fiyat="45"/><urun ad="Kalem" fiyat="12"/><urun ad="Dosya" fiyat="30"/></katalog>1Defter45,00
32Kalem12,00
43Dosya30,00
5Toplam87,00
Ürün KataloğuExcelDepo v1.0.0
C2 hücresi ilk ürün adını (Defter), D2 hücresi ilk ürünün fiyatını (45,00) getirir; formüller aşağı doğru kopyalandığında sıra numarası değiştiği için diğer ürünler de gelir. Öznitelikten gelen değer metin olabileceğinden VALUE ile sayıya çevrilmiştir; böylece D5 hücresindeki toplam (87,00) doğru hesaplanır.

Kullanırken dikkat edin​

  • Kullanım ortamı: FILTERXML işlevi Excel 2013 ve sonrasındaki Windows sürümlerinde bulunur. Excel'in Mac ve web sürümlerinde kullanılamaz; bu nedenle dosyayı paylaşacağınız kişilerin sürümünü düşünün.
  • Büyük/küçük harf ve yazım: XPath büyük/küçük harfe duyarlıdır. Öğe adı Urun ise ifadeniz de Urun olmalıdır. Tek tırnak içindeki karşılaştırma metinleri de aynı şekilde birebir yazılmalıdır.
  • Geçersiz XML hatası: XML metni hatalıysa (kapanmamış etiket, hatalı karakter gibi) ya da ifade hiçbir düğümle eşleşmiyorsa işlev #DEĞER! hatası verir. Metni önce sade bir ifadeyle deneyip sonra koşul eklemek hatayı bulmayı kolaylaştırır.
  • Ad alanları: XML belgesi ad alanı (xmlns) içeriyorsa basit ifadeler sonuç vermeyebilir. Bu durumda öğe adı yerine local-name işlevini kullanan bir ifade yazmanız gerekir.
  • Sınırlar: Bir hücreye sığan metin sınırı nedeniyle uzun XML belgeleri FILTERXML ile işlenemez. Büyük dosyalar için Veri > Veri Al > Dosyadan > XML'den yolunu ya da XML eşlemelerini tercih edin.
  • Sayısal sonuçlar: Öznitelik değerleri metin olarak gelebilir. Hesaplama yapacaksanız VALUE ile sayıya çevirin. Ondalıklı değerlerde XML'deki nokta ayırıcının bölgesel ayarlarınızla uyuşup uyuşmadığını denetleyin.
  • İlgili konular: XML eşlemesi, Geliştirici sekmesi, XML Kaynağı görev bölmesi, Veri > Veri Al > XML'den, Power Query, XMLFİLTRELE (FILTERXML), İNDİS, DEĞER, TOPLA, ADEDİ ÇEVİR gibi XML ve metin işlevleri.
Örneklerdeki tabloları indirilebilir Excel dosyasında kendiniz de deneyebilirsiniz.
Yazar
ExcelDepo
İndirme sayısı
0
Gösterim
15
İlk yayın
Güncel

Puanlar

0.00 Oylama 0 İnceleme
Geri
Üst