PHP XML Expat ɥɥ
প্রত্যক্ষ বুক্তপত্র পার্সারটি Expat XML নথিপত্রকে PHP-তে প্রক্রিয়াকরণ করা সম্ভব করে দেয়。
বুক্তপত্রটি ডাটা বর্ণনা করে, যার ফোকাস ডাটা কী হয়।XML নথিপত্রটি ডাটা স্ট্রাকচারকে বর্ণনা করে。
কি হল XML?
XML-তে, কোনও প্রকৃত ট্যাগ নেই।আপনাকে নিজের ট্যাগ নির্বাচন করতে হবে。
যদি XML সম্পর্কে আরও জানতে চান, আমাদের XML Tutorial。
কি হল Expat?
যদি পড়া এবং আপডেট করার জন্য - নথিপত্র সৃষ্টি এবং প্রক্রিয়াকরণ করার জন্য, তবে আপনাকে XML পার্সার চাই।
দুইটি মৌলিক XML পার্সার ধরন রয়েছে:
- ট্রি-ভিত্তিক পার্সারএই পার্সারটি একটি XML নথিপত্রকে ট্রি-আকৃতির হিসাবে রূপান্তর করে।এটি সমগ্র নথিপত্রকে পরীক্ষা করে এবং API-কে প্রদান করে যাতে ট্রিতে এলিমেন্টগুলির প্রাপ্তি করা যায়, যেমন ডকুমেন্ট অবজেক্ট মডেল (DOM)।
- ইভেন্ট-ভিত্তিক পার্সারএকটি XML নথিপত্রকে ইভেন্ট হিসাবে দেখুন।যখন একটি নির্দিষ্ট ইভেন্ট ঘটে, পার্সারটি ফাংশনটি বাস্তবায়িত করে এবং প্রক্রিয়াকরণ করে。
Expat পার্সারটি একটি ইভেন্ট-ভিত্তিক পার্সার
ইভেন্ট-ভিত্তিক পার্সারটি XML নথিপত্রের বিষয়ে কেন্দ্রীভূত, না তার ফলাফলের ওপর।এরপর ইভেন্ট-ভিত্তিক পার্সারটি ব্যাক্তিগত পার্সারকে তুলনায় দ্রুততর ডাটা প্রাপ্তি করতে পারে。
নিচের XML টুকুড়াটি দেখুন:
<from>জন</from>
ইভেন্ট-ভিত্তিক পার্সারটি উপরোক্ত XML-কে তিনটি ইভেন্ট হিসাবে প্রতিফলিত করে:
- শুরু হওয়া এলিমেন্ট: from
- CDATA অংশ শুরু, মান: John
- বন্ধ হওয়া এলিমেন্ট: from
উপরোক্ত XML উদাহরণটি উপযুক্ত XML ধারণ করে।কিন্তু, এই উদাহরণটি অবৈধ XML, কারণ এটির সাথে কোনও ডকুমেন্ট টাইপ ঘোষণা (DTD) নেই এবং এতে কোনও ভাস্তুতত্ত্বও নেই。
তবে, Expat পার্সার ব্যবহার করার সময় এটা কোনও পার্থক্য নেই।Expat একটি বৈধতা পরীক্ষণকারী নয়, যে কোনও DTD-কেও অবগত করে না。
একটি ইভেন্ট-ভিত্তিক, অনন্যমূলক XML পার্সার হিসাবে, Expat দ্রুত এবং সহজ, PHP-র ওয়েব অ্যাপ্লিকেশনের জন্য অত্যন্ত উপযুক্ত
মন্তব্য:XML নথিপত্রটি উপযুক্তভাবে ফর্ম্যাট করা উচিত, না তবে Expat ত্রুটি উৎপন্ন করবে。
ইনস্টল
XML Expat পার্সার PHP কর্মকারীর অংশবিশেষ।এই ফাংশনগুলি ইনস্টল করতে হয় না。
XML ফাইল
আমাদের উদাহরণে নিচের এই XML ফাইলটি ব্যবহার করা হবে:
<?xml version="1.0" encoding="ISO-8859-1"?> <note> <to>জর্জ</to> <from>জন</from> <heading>মন্থন</heading> <body>বৈঠকটি ভুলে নিন!</body> </note>
Initialize XML parser
আমরা PHP-তে XML পার্সার ইনিশালাইজ করব, বিভিন্ন XML ইভেন্টের জন্য হ্যান্ডলার নির্দিষ্ট করব, এবং এই XML ফাইলটি পার্স করব।
উদাহরণ
<?php //Initialize the XML parser $parser=xml_parser_create(); //Function to use at the start of an element function start($parser,$element_name,$element_attrs) { switch($element_name) { case "NOTE": echo "-- Note --<br />"; break; case "TO": echo "To: "; break; case "FROM": echo "From: "; break; case "HEADING": echo "Heading: "; break; case "BODY": echo "Message: "; } } //Function to use at the end of an element function stop($parser,$element_name) { echo "<br />"; } //Function to use when finding character data function char($parser,$data) { echo $data; } //Specify element handler xml_set_element_handler($parser,"start","stop"); //Specify data handler xml_set_character_data_handler($parser,"char"); //Open XML file $fp=fopen("test.xml","r"); //Read data while ($data=fread($fp,4096)) { xml_parse($parser,$data,feof($fp)) or die (sprintf("XML Error: %s at line %d", xml_error_string(xml_get_error_code($parser)), xml_get_current_line_number($parser))); } //Free the XML parser xml_parser_free($parser); ?>
Output of the above code:
-- Note -- To: George From: John Heading: Reminder Message: Don't forget the meeting!
Explanation of working principle:
- Initialize the XML parser using the xml_parser_create() function
- Create functions that work with different event handling programs
- Add the xml_set_element_handler() function to define which function to execute when the parser encounters start and end tags
- Add the xml_set_character_data_handler() function to define which function to execute when the parser encounters character data
- Parse the file "test.xml" using the xml_parse() function
- In case of an error, add the xml_error_string() function to convert XML errors to text descriptions
- Call the xml_parser_free() function to free the memory allocated to the xml_parser_create() function
More information about PHP Expat parser
For more information about PHP Expat functions, please visit our PHP XML Parser reference manual.