PHP XML Fonksiyonlar vs Düzenli İfade

2 Cevap php

Şu anda veri ayrıştırma sürü yapmak ve bu tür basit XML ve orada burada birkaç diğerleri gibi XML için PHP fonksiyonları ile eğlendi var.

Ama her kaynaklanmaktadır veriler sunulmaktadır yolu, onlarla uğraşan sorunu çeşit gibi görünüyor.

I bulduk en güvenilir yolu her zaman sadece basit işlem için komut için benim veri çekmek için preg_match_all ve düzenli ifade kullanmaktır.

Herkes bu bir sorun görüyor mu? Düzenli ifade ziyade hazır inşa XML ayrıştırıcılarını kullanmanın eksileri nelerdir?

Benim ana endişe hızı ve kaynakların sunucu kullanılmasıdır.

2 Cevap

Eğer DOMDocument ve DOMXPath kullanırsanız, ben bu sorunları çözecektir sanıyorum.

Bkz http://jp2.php.net/manual/en/class.domdocument.php ve http://jp2.php.net/manual/en/class.domxpath.php

Eğer olsa, yapmak için çalışıyoruz ne bir örnek verebilir misiniz?

Edit
To directly answer your question, though: regular expressions are easy to mess up -- especially processing hierarchical structures like xml. Even if you do it right, it will likely be slower than using xpath.

Edit 2
Just to add, php's implementation of xpath, DOMXpath only supports xpath 1.0. If you need to use regular expressions to evaluate the contents of an element or one of its attributes, then you'd need something supporting xpath 2.0.... or go with a risky, error-prone regex.

XML ayrıştırma ciddi, yüksek havai iş. Veri akışı düzenli ifadeler ile ayrıştırmak için yeterli basit iseniz, o bunu ayrıştırmak için en etkili yolu olacak.

Eğer kaynaklarını azaltırken XML ayrıştırma yapmak istiyorsanız, SAX çözümleyici muhtemelen en iyi bahistir. Bu el yapımı regexes olarak verimli olmayacak, ama yeterince iyi olabilir.

http://www.brainbell.com/tutorials/php/Parsing%5FXML%5FWith%5FSAX.htm

DOM ve Basit XML ayrıştırıcıları sonra doc doğrulayabilir, ve sonra bir düğüm yapıya dönüştürmek ve sonra verileri kullanabilir, tüm belge yüklenmesini gerektirir. Çözümleyici için bir sürü iş gibi geliyor mu? Öyle. Fakat birçok amaçlar için, hala uygun bulunuyor.

Çalışmalarımın çoğu için, ben XML vazgeçmiş ettik ve JSON kullanıyorum.