मैं एक जियोकोडिंग क्लास का निर्माण कर रहा हूं जो जियोकोडिंग (यानी Google, याहू, बिंग इत्यादि) के लिए एकाधिक वेबसाइसेस का उपयोग कर सकता है। मैं इसे इस तरह से बनाने की कोशिश कर रहा हूं कि नए वेबसाइसेस आसानी से कॉन्फ़िगर किए जा सकें। अधिकांश वेब सर्विसेज या तो एक्सएमएल/JSON लौटाते हैं .. PHP के लिए मैंने एक्सएमएल को अपना प्राथमिक फोकस चुना है। सभी कोड के स्थान पर पहले से ही है, लेकिन अब उदाहरण के लिए गूगल निम्नलिखित एक्सएमएल (एक simple_xml_element तब्दील)गतिशील रूप से नेस्टेड ऑब्जेक्ट का उपयोग
SimpleXMLElement Object
(
[status] => OK
[result] => Array
(
[0] => SimpleXMLElement Object
(
[type] => postal_code
[formatted_address] => 1010 Lausanne, Switzerland
[address_component] => Array
(
[0] => SimpleXMLElement Object
(
[long_name] => 1010
[short_name] => 1010
[type] => postal_code
)
[1] => SimpleXMLElement Object
(
[long_name] => Lausanne
[short_name] => Lausanne
[type] => Array
(
[0] => locality
[1] => political
)
)
[2] => SimpleXMLElement Object
(
[long_name] => Vaud
[short_name] => VD
[type] => Array
(
[0] => administrative_area_level_1
[1] => political
)
)
[3] => SimpleXMLElement Object
(
[long_name] => Switzerland
[short_name] => CH
[type] => Array
(
[0] => country
[1] => political
)
)
)
[geometry] => SimpleXMLElement Object
(
[location] => SimpleXMLElement Object
(
[lat] => 46.5376186
[lng] => 6.6539665
)
[location_type] => APPROXIMATE
[viewport] => SimpleXMLElement Object
(
[southwest] => SimpleXMLElement Object
(
[lat] => 46.5253574
[lng] => 6.6384420
)
[northeast] => SimpleXMLElement Object
(
[lat] => 46.5467887
[lng] => 6.6745222
)
)
[bounds] => SimpleXMLElement Object
(
[southwest] => SimpleXMLElement Object
(
[lat] => 46.5253574
[lng] => 6.6384420
)
[northeast] => SimpleXMLElement Object
(
[lat] => 46.5467887
[lng] => 6.6745222
)
)
)
)
)
जानकारी की आवश्यकता [स्थान] टैग में है देता है, तो मैं पथ भंडारण की कोशिश की है एक वर में:
$lat_path = 'result[0]->geometry->location->lat;
और फिर मूल्य इस तरह से पहुँचने का प्रयास:
(suppose $xml is the object)
$xml->{$lat_path};
लेकिन इस काम doens't। क्या कोई तरीका है कि मैं गतिशील रूप से या चर आधारित जानकारी तक पहुंच सकता हूं। मैं Google विशिष्ट कोड के साथ अपनी जियोकोडिंग विधि को बर्बाद नहीं करना चाहता हूं।
धन्यवाद!
उपयोग [SimpleXMLElement :: xpath] (http://www.php.net/manual/simplexmlelement.xpath.php) php आपत्ति अंकन के बजाय। (यदि आप कुछ एक्सएमएल दिखा सकते हैं, तो मैं एक उदाहरण कार्यान्वयन प्रदान करने की कोशिश करूंगा) – Yoshi
आप इसके लिए विधि लिख सकते हैं और भूल सकते हैं .. – Vytautas
मैंने एक्सपैथ का उपयोग करने का भी प्रयास किया, लेकिन यह काम नहीं किया :( print_r ($ xml-> एक्सपैथ ('ज्यामिति/स्थान')); मुझे एक खाली सरणी दी। –