PHP XML Expat Ayrıştırıcı
İçerikli Expat parseci, PHP'te XML belgeleriyle işlemeyi mümkün kılar.
İçerik olarak kullanılan XML, verinin ne olduğunu vurgular. XML dosyası, veri yapısını tanımlar.
XML nedir?
XML'de önceden tanımlanmış etiketler yok. Kendi etiketlerinizi tanımlamalısınız.
XML hakkında daha fazla bilgi öğrenmek istiyorsanız, sitemizi ziyaret edin: XML Eğitimi.
Expat nedir?
XML belgesini okumak ve güncellemek - bir XML belgesi oluşturmak ve işlemek için XML parseci gereklidir.
Temel iki XML parseci türü vardır:
- Ağaç tabanlı parseciBu tür parseci, XML belgesini bir ağaç yapısına dönüştürür. Tüm belgeyi analiz eder ve ağaçtaki elemanlara, örneğin belge nesnesi modeli (DOM) gibi API'ler sunar.
- Olay tabanlı parseciXML belgesini bir dizi olay olarak görmek.
Expat parseci olay tabanlı bir parsecdir.
Olay tabanlı parseci, XML belgesinin içeriğine odaklanır; onların sonuçlarına değil. Bu nedenle, olay tabanlı parseci, ağaç tabanlı parseclere göre veriye daha hızlı erişebilir.
Aşağıdaki XML parçasını görün:
<from>John</from>
Olay tabanlı parseci, yukarıdaki XML'yi üç olay olarak rapor eder:
- Elemanı başlat: from
- CDATA bölümünü başlat, değer: John
- Elemanı kapatma: from
Yukarıdaki XML örneği iyi bir şekilde oluşturulmuş XML içerir. Ancak bu örnek geçersiz XML'dir; çünkü ona bağlı bir belge türü beyanı (DTD) yok ve içeren DTD de yok.
Ancak, Expat parseci kullanılırken bu fark yok. Expat, geçerliliği kontrol etmeyen ve herhangi bir DTD'yi göz ardı eden bir parsecdir.
Bir olay tabanlı, doğrulama olmayan XML parseci olan Expat hızlı ve hafif, PHP'nin web uygulamalarına son derece uygundur.
Açıklama:XML belgesi iyi bir şekilde oluşturulmalıdır; aksi takdirde Expat hata oluşturur.
Yükleme
XML Expat解析ci PHP'nin çekirdek bileşenlerinden biridir. Bu fonksiyonları kullanmak için yükleme gerekmez.
XML Dosyası
Örneklerimizde aşağıdaki XML dosyasını kullanacağız:
<?xml version="1.0" encoding="ISO-8859-1"?> <note> <to>George</to> <from>John</from> <heading>Hatırlatma</heading> <body>Unutmayın toplantıyı!</body> </note>
XML işleyicisini initialize etme
PHP'te XML işleyicisini initialize etmeliyiz, farklı XML olayları için işleyiciler tanımlamalıyız ve ardından bu XML dosyasını çözümleyelim.
Örnek
<?php //XML işleyicisini başlat $parser=xml_parser_create(); //Bir elemanın başında kullanılacak fonksiyon function start($parser,$element_name,$element_attrs) { switch($element_name) { case "NOTE": echo "-- Not --<br />"; break; case "TO": echo "Kime: "; break; case "FROM": echo "Kimden: "; break; case "HEADING": echo "Başlık: "; break; case "BODY": echo "Mesaj: "; } } //Bir elemanın sonunda kullanılacak fonksiyon function stop($parser,$element_name) { echo "<br />"; } //Karakter verilerini bulduğunda kullanılacak fonksiyon function char($parser,$data) { echo $data; } //Element işleyici belirle xml_set_element_handler($parser,"start","stop"); //Veri işleyici belirle xml_set_character_data_handler($parser,"char"); //XML dosyasını aç $fp=fopen("test.xml","r"); //Veri oku while ($data=fread($fp,4096)) { xml_parse($parser,$data,feof($fp)) veya die (sprintf("XML Hata: %s satır %d de", xml_error_string(xml_get_error_code($parser)), xml_get_current_line_number($parser))); } //XML parser'ı serbest bırakın xml_parser_free($parser); ?>
Yukarıdaki kodun çıktısı:
-- Not -- Kime: George Kimden: John Başlık: Hatırlatma Mesaj: Toplantıyı unutmayın!
Çalışma prensibi açıklaması:
- XML解析cörücüini başlatmak için xml_parser_create() fonksiyonunu kullanın
- Farklı olay işleme programlarıyla uyumlu fonksiyonlar oluşturun
- Parser başlangıç ve bitiş etiketleri ile karşılaştığında hangi fonksiyonu çalıştırmak istediğinizi tanımlamak için xml_set_element_handler() fonksiyonunu ekleyin
- Parser karakter verisi ile karşılaştığında hangi fonksiyonu çalıştırmak istediğinizi tanımlamak için xml_set_character_data_handler() fonksiyonunu ekleyin
- test.xml dosyasını解析 etmek için xml_parse() fonksiyonunu kullanın
- Hata varsa, XML hatasını metin açıklamasına dönüştürmek için xml_error_string() fonksiyonunu ekleyin
- xml_parser_create() fonksiyonuna atanan hafızayı serbest bırakmak için xml_parser_free() fonksiyonunu çağırın
Daha fazla PHP Expat Çözümleyici bilgisi
PHP Expat Fonksiyonları hakkında daha fazla bilgi için PHP XML Parser Referans Kılavuzumuzu ziyaret edin.