কিভাবে C ++ এ XML বিশ্লেষণ করবেন

How Parse Xml C



এই নিবন্ধে, আমরা কিভাবে C ++ প্রোগ্রামিং ভাষায় XML বিশ্লেষণ করব তা নিয়ে আলোচনা করতে যাচ্ছি। আমরা সি ++ এ এক্সএমএল পার্সিং প্রক্রিয়াটি বোঝার জন্য বেশ কয়েকটি কাজের উদাহরণ দেখতে পাব।

XML কি?

এক্সএমএল এটি একটি মার্কআপ ল্যাঙ্গুয়েজ এবং এটি মূলত সংগঠিত উপায়ে ডেটা সংরক্ষণ এবং স্থানান্তরের জন্য ব্যবহৃত হয়। এক্সএমএল মানে এক্সটেনসিবল মার্কআপ ল্যাঙ্গুয়েজ। এটি HTML এর অনুরূপ। এক্সএমএল সম্পূর্ণরূপে ডেটা সংরক্ষণ এবং স্থানান্তরের দিকে মনোনিবেশ করে, যেখানে এইচটিএমএল ব্রাউজারে ডেটা প্রদর্শনের জন্য ব্যবহৃত হয়।







একটি নমুনা এক্সএমএল ফাইল/এক্সএমএল সিনট্যাক্স

এখানে একটি নমুনা এক্সএমএল ফাইল:



সংস্করণ='1.0' এনকোডিং='ইউটিএফ -8'?>

>

ছাত্র_প্রকার='খন্ডকালীন'>

>টম>

>

ছাত্র_প্রকার='ফুলটাইম'>

>ড্রাক>

>

>

HTML এর বিপরীতে, এটি একটি ট্যাগ-ভিত্তিক মার্কআপ ভাষা, এবং আমরা একটি XML ফাইলে আমাদের নিজস্ব ট্যাগ সংজ্ঞায়িত করতে পারি। উপরের উদাহরণে, আমাদের বেশ কয়েকটি ব্যবহারকারী-সংজ্ঞায়িত ট্যাগ আছে যেমন। প্রতিটি ট্যাগে সংশ্লিষ্ট সমাপ্তি ট্যাগ থাকবে। এর জন্য শেষ ট্যাগ। আমরা যতগুলি ব্যবহারকারী-সংজ্ঞায়িত ট্যাগ সংজ্ঞায়িত করতে পারি আমরা ডেটা সংগঠিত করতে চাই।



সি ++ এ লাইব্রেরি পার্স করা:

বেশিরভাগ উচ্চ-স্তরের প্রোগ্রামিং ভাষায় এক্সএমএল ডেটা বিশ্লেষণ করার জন্য বিভিন্ন লাইব্রেরি রয়েছে। C ++ ব্যতিক্রম নয়। এক্সএমএল ডেটা বিশ্লেষণ করার জন্য এখানে সর্বাধিক জনপ্রিয় সি ++ লাইব্রেরি রয়েছে:





  1. RapidXML
  2. PugiXML
  3. TinyXML

নাম থেকে বোঝা যায়, RapidXML প্রধানত গতিতে ফোকাস করা হয়, এবং এটি একটি DOM স্টাইল পার্সিং লাইব্রেরি। PugiXML ইউনিকোড রূপান্তর সমর্থন করে। আপনি যদি UTF-16 ডককে UTF-8 এ রূপান্তর করতে চান তবে আপনি PugiXML ব্যবহার করতে চাইতে পারেন। TinyXML XML ডেটা বিশ্লেষণ করার জন্য একটি ন্যূনতম সংস্করণ এবং আগের দুটি তুলনায় দ্রুত নয়। আপনি যদি কেবল কাজটি সম্পন্ন করতে চান এবং গতি সম্পর্কে চিন্তা না করেন তবে আপনি TinyXML বেছে নিতে পারেন।

উদাহরণ
এখন, আমাদের C ++ এ XML এবং XML পার্সিং লাইব্রেরির প্রাথমিক ধারণা আছে। আসুন এখন C ++ এ xml ফাইল বিশ্লেষণ করার জন্য কয়েকটি উদাহরণ দেখি:



  • উদাহরণ -1: RapidXML ব্যবহার করে C ++ এ XML বিশ্লেষণ করুন
  • উদাহরণ -২: PugiXML ব্যবহার করে C ++ এ XML বিশ্লেষণ করুন
  • উদাহরণ-3: TinyXML ব্যবহার করে C ++ এ XML বিশ্লেষণ করুন

এই প্রতিটি উদাহরণে, আমরা একটি নমুনা এক্সএমএল ফাইল বিশ্লেষণ করতে সংশ্লিষ্ট লাইব্রেরি ব্যবহার করব।

উদাহরণ -1: RapidXML ব্যবহার করে C ++ এ XML বিশ্লেষণ করুন

এই উদাহরণ প্রোগ্রামে, আমরা দেখাবো কিভাবে C ++ তে RapidXML লাইব্রেরি ব্যবহার করে xml বিশ্লেষণ করতে হয়। এখানে ইনপুট এক্সএমএল ফাইল (sample.xml):

সংস্করণ='1.0' এনকোডিং='ইউটিএফ -8'?>

>

ছাত্র_প্রকার='খন্ডকালীন'>

>জন>

>

ছাত্র_প্রকার='ফুলটাইম'>

>শন>

>

ছাত্র_প্রকার='খন্ডকালীন'>

>সারাহ>

>

>

এখানে আমাদের লক্ষ্য হল C ++ ব্যবহার করে উপরের XML ফাইলটি বিশ্লেষণ করা। রেপিডএক্সএমএল ব্যবহার করে এক্সএমএল ডেটা বিশ্লেষণ করার জন্য এখানে সি ++ প্রোগ্রাম রয়েছে। আপনি RapidXML লাইব্রেরি থেকে ডাউনলোড করতে পারেন এখানে

#অন্তর্ভুক্ত
#অন্তর্ভুক্ত
#অন্তর্ভুক্ত
#অন্তর্ভুক্ত 'Rapidxml.hpp'

ব্যবহার নামস্থানঘন্টার;
ব্যবহার নামস্থানদ্রুত এক্সএমএল;


xml_documentডক
xml_node *root_node= খালি;

intপ্রধান(অকার্যকর)
{
খরচ << 'nআমার ছাত্রদের ডেটা পার্স করা হচ্ছে (sample.xml) ..... ' <<endl;

// sample.xml ফাইলটি পড়ুন
যদি ফাইলটি প্রবাহিত হয়('sample.xml');
ভেক্টর<গৃহস্থালি>বাফার((istreambuf_iterator<গৃহস্থালি>(ফাইল)), istreambuf_iterator<গৃহস্থালি>());
বাফারফেরত পাঠাও(' 0');

// বাফার বিশ্লেষণ করুন
ডক।বিশ্লেষণ<0>(&বাফার[0]);

// রুট নোড খুঁজে বের করুন
root_node=ডক।first_node('মাই স্টুডেন্টস ডেটা');

// ছাত্র নোড উপর Iterate
জন্য (xml_node *ছাত্র_নোড=root_node->first_node('ছাত্র');ছাত্র_নোড;ছাত্র_নোড=ছাত্র_নোড->next_sibling())
{
খরচ << 'nছাত্রের ধরন = ' <<ছাত্র_নোড->first_attribute('ছাত্র_প্রকার')->মান();
খরচ <<endl;

// শিক্ষার্থীদের নামগুলির সাথে একীভূত করুন
জন্য(xml_node *ছাত্র_নাম_নোড=ছাত্র_নোড->first_node('নাম');ছাত্র_নাম_নোড;ছাত্র_নাম_নোড=ছাত্র_নাম_নোড->next_sibling())
{
খরচ << 'ছাত্রের নাম =' <<ছাত্র_নাম_নোড->মান();
খরচ <<endl;
}
খরচ <<endl;
}

প্রত্যাবর্তন 0;
}

উদাহরণ -২: PugiXML ব্যবহার করে C ++ এ XML বিশ্লেষণ করুন

এই উদাহরণ প্রোগ্রামে, আমরা দেখাবো কিভাবে C ++ এ PugiXML লাইব্রেরি ব্যবহার করে xml বিশ্লেষণ করতে হয়। এখানে ইনপুট এক্সএমএল ফাইল (sample.xml):

সংস্করণ='1.0' এনকোডিং='UTF-8' স্বতন্ত্র='না' ?>

ফরম্যাট ভার্সন='1'>

>

নাম='জন' প্রকার='খন্ডকালীন'>

>

নাম='শন' প্রকার='ফুলটাইম'>

>

নাম='সারাহ' প্রকার='খন্ডকালীন'>

>

>

>

এই উদাহরণ প্রোগ্রামে, আমরা দেখাবো কিভাবে C ++ এ pugixml লাইব্রেরি ব্যবহার করে xml বিশ্লেষণ করতে হয়। আপনি PugiXML লাইব্রেরি থেকে ডাউনলোড করতে পারেন এখানে

#অন্তর্ভুক্ত
#অন্তর্ভুক্ত 'pugixml.hpp'

ব্যবহার নামস্থানঘন্টার;
ব্যবহার নামস্থানpugi;

intপ্রধান()
{
খরচ << 'nকর্মীদের ডেটা পার্স করা হচ্ছে (sample.xml) .....nn';


xml_document ডক;

// এক্সএমএল ফাইল লোড করুন
যদি (!ডক।load_file('sample.xml')) প্রত্যাবর্তন -;

xml_node সরঞ্জাম=ডক।শিশু('কর্মচারী ডেটা')শিশু('কর্মচারী');


জন্য (xml_node_iterator এটি=সরঞ্জামশুরু();এটা!=সরঞ্জামশেষ(); ++এটা)
{
খরচ << 'কর্মচারী:';

জন্য (xml_attribute_iterator ait=এটা->attributes_begin();অন্তর্গত!=এটা->attributes_end(); ++অন্তর্গত)
{
খরচ << '' <<অন্তর্গত->নাম() << '=' <<অন্তর্গত->মান();
}

খরচ <<endl;
}

খরচ <<endl;

প্রত্যাবর্তন 0;

}

উদাহরণ-3: TinyXML ব্যবহার করে C ++ এ XML বিশ্লেষণ করুন

এই উদাহরণ প্রোগ্রামে, আমরা দেখাবো কিভাবে C ++ এ TinyXML লাইব্রেরি ব্যবহার করে xml বিশ্লেষণ করতে হয়। এখানে ইনপুট এক্সএমএল ফাইল (sample.xml):

সংস্করণ='1.0' এনকোডিং='ইউটিএফ -8'?>

>

>জন>

>শন>

>সারাহ>

>

এই উদাহরণ প্রোগ্রামে, আমরা দেখাবো কিভাবে C ++ এ TinyXML লাইব্রেরি ব্যবহার করে xml বিশ্লেষণ করতে হয়। আপনি TinyXML লাইব্রেরি থেকে ডাউনলোড করতে পারেন এখানে

#অন্তর্ভুক্ত
#অন্তর্ভুক্ত
#অন্তর্ভুক্ত
#অন্তর্ভুক্ত 'tinyxml2.cpp'

ব্যবহার নামস্থানঘন্টার;
ব্যবহার নামস্থানtinyxml2;


intপ্রধান(অকার্যকর)
{
খরচ << 'nআমার ছাত্রদের ডেটা পার্স করা হচ্ছে (sample.xml) ..... ' <<endl;

// sample.xml ফাইলটি পড়ুন
XMLDocument ডক;
ডক।লোড ফাইল( 'sample.xml' );

const গৃহস্থালি*শিরোনাম=ডক।প্রথম শিশু উপাদান( 'মাই স্টুডেন্টস ডেটা' )->প্রথম শিশু উপাদান( 'ছাত্র' )->GetText();
printf( শিক্ষার্থীর নাম: %sn', শিরোনাম);


এক্সএমএল টেক্সট*টেক্সট নোড=ডক।LastChildElement( 'মাই স্টুডেন্টস ডেটা' )->LastChildElement( 'ছাত্র' )->প্রথম সন্তান()->লিখতে();
শিরোনাম=টেক্সট নোড->মান();
printf( শিক্ষার্থীর নাম: %sn', শিরোনাম);


প্রত্যাবর্তন 0;
}

উপসংহার

এই নিবন্ধে, আমরা সংক্ষেপে আলোচনা করেছি এক্সএমএল এবং কিভাবে C ++ এ XML বিশ্লেষণ করা যায় তার তিনটি ভিন্ন উদাহরণের দিকে নজর দিলেন। TinyXML XML ডেটা পার্স করার জন্য একটি মিনিমালিস্টিক লাইব্রেরি। এক্সএমএল ডেটা বিশ্লেষণ করতে বেশিরভাগ প্রোগ্রামাররা মূলত র্যাপিডএক্সএমএল বা পুগিএক্সএমএল ব্যবহার করে।