Twitter XML doğrulanıyor

3 Cevap php

Ben (bu durumda bir Twitter API çağrı yoluyla,) XML veri aldığınızda, ben onunla çalışmaya başlamadan önce nasılsa bunu doğrulamak için en iyi uygulama hayal? Benim app son zamanlarda untractable konularda bir sürü vardı, ve ben kötü XML verilerini ekarte etmek istiyorum.

XML hiç bir şekilde "kötü" go mu? Twitter gibi bir aşırı sunucu hiç yoluma gelmelidir ne sadece yarım tükürmek oluyor misiniz?

Benim asıl soru iki yönlüdür: ben onunla çalışmak önce XML verilerini doğrulamak gerektiğini, ve ben bunu nasıl yapıyor hakkında gitmek istiyorsunuz? (Ben zaten XML verilerinin sözde yapısını biliyorum)

Teşekkürler!

Ben bir cevap (ve çabaları için teşekkür) seçmek önce son bir açıklama: Ben sadece statik-uzunluk XML dosyası üzerinden 5 öngörülebilir alanları gerekiyorsa, böyle bir şey bir XSD oluşturarak üstesinden boşluklar bırakıyor?

if(!isset($xml->id, $xml->text, $xml->created_at, $xml->sender, $xml->recipient)) throw...

3 Cevap

XML sizin doğrulama en belirgin yöntem olacaktır:

  1. Attempt to load the XML into your favourite DOM container or parse it using some other mechanism (I'm not completely familair with XML processing in PHP). This would allow you to check if the XML is 'well formed'. If the XML is not well formed (i.e. you only got half the XML response back) then you'd catch this problem at this point and deal with it.

  2. Once you've successfully loaded/parsed the XML the next thing is to validate it against an XML schema. Unfortunately Twitter don't publish XML schemas for their XML so you'd need to roll these yourself.

Elle kendi XML şema en oluşturabilirsiniz. Burada başlamanıza yardımcı olacak bir link:

XML Schema Tutorial (W3 Schools)

Ayrıca XML şema 'anlaması' böyle Altova XMLSpy gibi araçlar alabilirsiniz. yani şema tanımlamak için nasıl gibi, sen nesilden sonra oynamak zorunda kalabilirsiniz en iyi tahmin yapar. Orada diğer ücretsiz araçlar var ama ben sadece hiç XMLSpy kullandım. Alan Heyecan hiç kendi XML formatını değiştirmek eğer bu değişiklikleri hesaba katmak için şemalar güncellemeniz gerekir, diyor.

Oluşturma XML şemaları ilk başta zor olabilir ama onu asmak olsun kez oldukça kolay bulacaksınız. Ben ilk başladığımda ben bu kitabı mükemmel bulundu:

XML Schema - The W3C's Object-Oriented Descriptions for XML (O'Reilly Press)

Sorunuzu yanıtlamak için:

Giriş doğrulama hata işleme ana parçalarından biridir. Hep kötü veri almak ve sonra da en iyi siz yapabilirsiniz buna karşı korumak olduğunu varsayalım gerekir.

XML doğrulamak için, (genellikle bir XSD dosyasında muhafaza) bir şema karşı doğrulamak.

Sen bir XML dosyası bir şema çıkarabiliriz. MSFT, Xsd.exe (Visual Studio ile birlikte geliyor), bu yapmak, ya da başka bir 3. parti aracını kullanabilirsiniz ücretsiz bir aracı var. Ancak, bu olumsuz Twitter şimdiye kadar kendi biçimini güncellemeleri eğer şema en güncellemeniz gerekir olmasıdır. Bir şema olmadan, XML (ayrıştırmak çalışarak genellikle) Wellformed emin olun ve sadece beklediğiniz verilerin eksik ve savunmaya çevresinde kodu olduğunu varsayalım.

Bu heyecan bir XML API yayınlıyor, ancak şemaları yayınlayarak olmadığı talihsiz.

Kendi şema yazma avantajı şemaya göre geçerli olan mesajları işlemek için program kodu olabilir. Sonra, Twitter kendi API değiştirir, ya da eğer bekliyor, ya da değil bir ileti biçimi yayan bir belgelenmemiş bir özelliği varsa eğer bunun yerine 'seni arızalı nedenini bulmak zorunda programın etrafında kazma, bunların belgelerine yanlış anladın ll hemen bir doğrulama hatası alıyorum. Mesaj beklemiyordum bir formda neden mutlaka bilmiyorum, ama en azından bu sorunun ne olduğunu bileceksiniz.