दिलचस्प पोस्ट
एक टुकड़ा और एक गतिविधि के बीच संचार – सर्वोत्तम अभ्यास ES6 वस्तुओं में तरीकों: तीर कार्यों का उपयोग करना जेएसटीएल / ईएल का इस्तेमाल करते हुए जेएसपीपी से पैरामीटरेटेड विधि को कैसे कॉल किया जाए कार्यक्रम के लिए शुरुआत करने वाले को पढ़ाने के लिए सर्वोत्तम तरीके हैं? रूबी में एक हैश में कनवर्ट करने का सबसे अच्छा तरीका क्या है bash: अवैध संख्या Urllib2.urlopen पर उपयोगकर्ता एजेंट बदलना कैसे मैं आउटपुट org.w3c.dom.Java में स्ट्रिंग प्रारूप करने के लिए एलेमेंट? Linq क्या है और यह क्या करता है? क्रॉस-डोमेन अजाक्स एक सुरक्षा चिंता क्यों है? एंड्रॉइड 4.2.1, वेबव्यू और जावास्क्रिप्ट अंतरफलक टूटता है एक स्ट्रिंग एन्क्रिप्ट और डिक्रिप्ट करें एंड्रॉइड: मैं ViewPager WRAP_CONTENT नहीं कर पा रहा हूं एक 'के लिए' लूप के भीतर पोस्ट-इंकरिमेंट और प्री इनेरमेंट समान उत्पादन हर बार जब मैं मॉलोक का उपयोग करता हूं तो मुझे एक चेतावनी क्यों मिलती है?

PHP के लिए सर्वश्रेष्ठ XML पार्सर

मैंने पहले एक्सएमएल पार्सर का इस्तेमाल किया है, और यद्यपि यह ठीक काम करता है, मैं इसके साथ सामान्य रूप से खुश नहीं था, ऐसा लगा जैसे मैं उन चीजों के लिए काम कर रहा था जो मूलभूत कार्यक्षमता होनी चाहिए।

मैंने हाल ही में सोशल एक्सएमएल देखा है लेकिन मैंने इसे अभी तक नहीं किया है क्या यह कोई आसान है? दोनों क्या फायदे और नुकसान कर रहे हैं? आपके द्वारा उपयोग किए गए कोई अन्य पार्सर?

वेब के समाधान से एकत्रित समाधान "PHP के लिए सर्वश्रेष्ठ XML पार्सर"

मुझे कहना होगा कि SimpleXML केक लेता है क्योंकि यह पहली बार एक एक्सटेंशन है, जो सी में लिखा गया है, और बहुत तेज है। लेकिन दूसरा, पार्स किए गए दस्तावेज़ को PHP ऑब्जेक्ट का रूप लेता है। तो आप $root->myElement जैसे "क्वेरी" कर सकते हैं

PHP के उपलब्ध XML एक्सटेंशन पर एक नज़र डालें और उन लोगों की चर्चा के लिए http://devzone.zend.com/243/ और http://devzone.zend.com/1035/ देखें।

एक्सएमएल पार्सर और सरल एक्सएमएल के बीच मुख्य अंतर यह है कि उत्तरार्द्ध एक पुल पार्सर नहीं है। सरल एक्सएमएल डीओएम एक्सटेंशन के ऊपर बनाया गया है और पूरी XML फ़ाइल को स्मृति में लोड करेगा। एक्सएमएल पार्सर जैसे XMLReader केवल वर्तमान नोड को स्मृति में लोड करेगा आप विशिष्ट नोड्स के लिए हैंडलर परिभाषित करते हैं जो पार्सर के साथ मुठभेड़ होने पर ट्रिगर हो जाएगा। यह तेज है और स्मृति पर बचाता है आप XPath का उपयोग करने में सक्षम नहीं होने के लिए उस के लिए भुगतान करते हैं।

निजी तौर पर, मुझे सोमैटएक्सएम काफी डोम से अधिक प्रदान करता है (इसलिए सरल) को सीमित करता है आप आसानी से DOM और SimpleXml के बीच स्विच कर सकते हैं, लेकिन मैं आम तौर पर परेशान नहीं होता और सीधे DOM मार्ग को जाता हूं। DOM W3C DOM API का कार्यान्वयन है, इसलिए आप इसके साथ अन्य भाषाओं से परिचित हो सकते हैं, उदाहरण के लिए जावास्क्रिप्ट

जब एक एक्सटेंशन उपलब्ध नहीं होता है तो यह त्वरित और आसान XML पार्सिंग के लिए एक उपयोगी कार्य है:

 <?php /** * Convert XML to an Array * * @param string $XML * @return array */ function XMLtoArray($XML) { $xml_parser = xml_parser_create(); xml_parse_into_struct($xml_parser, $XML, $vals); xml_parser_free($xml_parser); // wyznaczamy tablice z powtarzajacymi sie tagami na tym samym poziomie $_tmp=''; foreach ($vals as $xml_elem) { $x_tag=$xml_elem['tag']; $x_level=$xml_elem['level']; $x_type=$xml_elem['type']; if ($x_level!=1 && $x_type == 'close') { if (isset($multi_key[$x_tag][$x_level])) $multi_key[$x_tag][$x_level]=1; else $multi_key[$x_tag][$x_level]=0; } if ($x_level!=1 && $x_type == 'complete') { if ($_tmp==$x_tag) $multi_key[$x_tag][$x_level]=1; $_tmp=$x_tag; } } // jedziemy po tablicy foreach ($vals as $xml_elem) { $x_tag=$xml_elem['tag']; $x_level=$xml_elem['level']; $x_type=$xml_elem['type']; if ($x_type == 'open') $level[$x_level] = $x_tag; $start_level = 1; $php_stmt = '$xml_array'; if ($x_type=='close' && $x_level!=1) $multi_key[$x_tag][$x_level]++; while ($start_level < $x_level) { $php_stmt .= '[$level['.$start_level.']]'; if (isset($multi_key[$level[$start_level]][$start_level]) && $multi_key[$level[$start_level]][$start_level]) $php_stmt .= '['.($multi_key[$level[$start_level]][$start_level]-1).']'; $start_level++; } $add=''; if (isset($multi_key[$x_tag][$x_level]) && $multi_key[$x_tag][$x_level] && ($x_type=='open' || $x_type=='complete')) { if (!isset($multi_key2[$x_tag][$x_level])) $multi_key2[$x_tag][$x_level]=0; else $multi_key2[$x_tag][$x_level]++; $add='['.$multi_key2[$x_tag][$x_level].']'; } if (isset($xml_elem['value']) && trim($xml_elem['value'])!='' && !array_key_exists('attributes', $xml_elem)) { if ($x_type == 'open') $php_stmt_main=$php_stmt.'[$x_type]'.$add.'[\'content\'] = $xml_elem[\'value\'];'; else $php_stmt_main=$php_stmt.'[$x_tag]'.$add.' = $xml_elem[\'value\'];'; eval($php_stmt_main); } if (array_key_exists('attributes', $xml_elem)) { if (isset($xml_elem['value'])) { $php_stmt_main=$php_stmt.'[$x_tag]'.$add.'[\'content\'] = $xml_elem[\'value\'];'; eval($php_stmt_main); } foreach ($xml_elem['attributes'] as $key=>$value) { $php_stmt_att=$php_stmt.'[$x_tag]'.$add.'[$key] = $value;'; eval($php_stmt_att); } } } return $xml_array; } ?> 

नमस्ते मुझे लगता है कि SimpleXml बहुत उपयोगी है। और इसके साथ मैं xpath का उपयोग कर रहा हूं;

 $xml = simplexml_load_file("som_xml.xml"); $blocks = $xml->xpath('//block'); //gets all <block/> tags $blocks2 = $xml->xpath('//layout/block'); //gets all <block/> which parent are <layout/> tags 

मैं कई XML विन्यास का उपयोग करता हूं और इससे मुझे वास्तव में तेजी से पार्स करने में मदद मिलती है I SimpleXml C पर लिखा C इसलिए यह बहुत तेज है

यह इस बात पर निर्भर करता है कि आप XML फ़ाइलों के साथ क्या करने का प्रयास कर रहे हैं यदि आप बस एक्सएमएल फाइल (जैसे कि कॉन्फ़िगरेशन फ़ाइल) को पढ़ने की कोशिश कर रहे हैं, तो द बेस्ट फ्लीए को सरल एक्सएमएल के सुझाव देने में सही है क्योंकि यह बनाता है कि नेस्टेड अर्रेऑब्जेक्ट जैसे मान $ xml-> root-> बच्चे द्वारा सुलभ हो जाएगा

यदि आप एक्सएमएल फ़ाइलों को हेरफेर करने की कोशिश कर रहे हैं, तो आप संभवतः डॉओएम एक्सएमएल का इस्तेमाल कर रहे हैं

सीआरएक्सएमएल पार्सर पार्सर के लिए एक असली आसान है।

इस वर्ग को एक खोज फ़ंक्शन मिल गया है, जिसमें कोई नाम स्थान एक तर्क के रूप में नोड नाम है। यह नोड के लिए एक्सएमएल की खोज करता है और इस वर्ग के उपयोग से उस नोड तक पहुंचने के लिए एक्सेस स्टेटमेंट को प्रिंट करता है। यह वर्ग भी एक्सएमएल पीढ़ी को बहुत आसान बनाता है।

आप इस वर्ग को यहां पर डाउनलोड कर सकते हैं

http://freshmeat.net/projects/crxml

या phpclasses.org से

http://www.phpclasses.org/package/6769-PHP-Manipulate-XML-documents-as-array.html