C ++ میں XML کی تجزیہ کیسے کریں۔

How Parse Xml C



اس آرٹیکل میں ، ہم بحث کر رہے ہیں کہ XML کو C ++ پروگرامنگ زبان میں کیسے تجزیہ کیا جائے۔ ہم C ++ میں XML تجزیہ کرنے کے طریقہ کار کو سمجھنے کے لیے کئی کام کرنے والی مثالیں دیکھیں گے۔

XML کیا ہے؟

XML ایک مارک اپ زبان ہے اور بنیادی طور پر ایک منظم طریقے سے ڈیٹا کو ذخیرہ کرنے اور منتقل کرنے کے لیے استعمال ہوتی ہے۔ ایکس ایم ایل کا مطلب ہے ایکسٹینسیبل مارک اپ لینگویج۔ یہ HTML سے بہت ملتا جلتا ہے۔ XML مکمل طور پر ڈیٹا کو ذخیرہ کرنے اور منتقل کرنے پر مرکوز ہے ، جبکہ HTML براؤزر پر ڈیٹا کو ظاہر کرنے کے لیے استعمال ہوتا ہے۔







ایک نمونہ XML فائل/XML نحو۔

یہاں ایک نمونہ XML فائل ہے:



ورژن='1.0' انکوڈنگ='utf-8'؟>

>

طالب علم کی قسم='پارٹ ٹائم'>

>ٹام>

>

طالب علم کی قسم='پوراوقت'>

>ڈریک>

>

>

ایچ ٹی ایم ایل کے برعکس ، یہ ایک ٹیگ پر مبنی مارک اپ زبان ہے ، اور ہم ایک ایکس ایم ایل فائل میں اپنے ٹیگ کی وضاحت کر سکتے ہیں۔ مندرجہ بالا مثال میں ، ہمارے پاس کئی صارف کی وضاحت شدہ ٹیگز ہیں جیسے۔ ہر ٹیگ میں متعلقہ اختتامی ٹیگ ہوگا۔ کے لیے اختتامی ٹیگ ہے۔ ہم جتنے بھی صارف کے متعین کردہ ٹیگ بیان کر سکتے ہیں ہم ڈیٹا کو ترتیب دینا چاہتے ہیں۔



C ++ میں لائبریریاں تجزیہ کرنا:

اعلی درجے کی پروگرامنگ زبانوں میں XML ڈیٹا کو پارس کرنے کے لیے مختلف لائبریریاں ہیں۔ C ++ کوئی استثنا نہیں ہے۔ XML ڈیٹا کو پارس کرنے کے لیے یہاں C ++ لائبریریاں سب سے زیادہ مشہور ہیں۔





  1. ریپڈ ایکس ایم ایل۔
  2. پگی ایکس ایم ایل۔
  3. ٹنی ایکس ایم ایل۔

جیسا کہ نام سے پتہ چلتا ہے ، ریپڈ ایکس ایم ایل بنیادی طور پر رفتار پر مرکوز ہے ، اور یہ ایک DOM طرز پارسنگ لائبریری ہے۔ PugiXML یونیکوڈ تبادلوں کی حمایت کرتا ہے۔ اگر آپ UTF-16 دستاویز کو UTF-8 میں تبدیل کرنا چاہتے ہیں تو آپ PugiXML استعمال کرنا چاہتے ہیں۔ ٹنی ایکس ایم ایل ایکس ایم ایل ڈیٹا کو پارس کرنے کا ایک کم سے کم ورژن ہے اور پچھلے دو کے مقابلے میں اتنا تیز نہیں۔ اگر آپ صرف کام کرنا چاہتے ہیں اور رفتار کی پرواہ نہیں کرتے ہیں تو ، آپ ٹنی ایکس ایم ایل کا انتخاب کرسکتے ہیں۔

مثالیں
اب ، ہمیں C ++ میں XML اور XML تجزیہ لائبریریوں کی بنیادی تفہیم ہے۔ آئیے اب C ++ میں xml فائل کو پارس کرنے کے لیے کچھ مثالیں دیکھیں:



  • مثال -1: ریپڈ ایکس ایم ایل کا استعمال کرتے ہوئے ایکس ایم ایل کو سی ++ میں پارس کریں۔
  • مثال 2: PugiXML کا استعمال کرتے ہوئے XML کو C ++ میں تجزیہ کریں۔
  • مثال 3: TMLX کا استعمال کرتے ہوئے XML کو C ++ میں تجزیہ کریں۔

ان مثالوں میں سے ہر ایک میں ، ہم نمونہ XML فائل کی تجزیہ کے لیے متعلقہ لائبریریوں کا استعمال کریں گے۔

مثال -1: ریپڈ ایکس ایم ایل کا استعمال کرتے ہوئے ایکس ایم ایل کو سی ++ میں پارس کریں۔

اس مثال کے پروگرام میں ، ہم دکھائیں گے کہ کس طرح ایکس ایم ایل کو C ++ میں ریپڈ ایکس ایم ایل لائبریری کا استعمال کرتے ہوئے تجزیہ کریں۔ یہاں ان پٹ XML فائل ہے (sample.xml):

ورژن='1.0' انکوڈنگ='utf-8'؟>

>

طالب علم کی قسم='پارٹ ٹائم'>

>جان>

>

طالب علم کی قسم='پوراوقت'>

>شان>

>

طالب علم کی قسم='پارٹ ٹائم'>

>سارہ>

>

>

یہاں ہمارا ہدف C ++ کا استعمال کرتے ہوئے اوپر کی XML فائل کی تجزیہ کرنا ہے۔ ریپڈ ایکس ایم ایل کا استعمال کرتے ہوئے ایکس ایم ایل ڈیٹا کو پارس کرنے کے لیے یہ سی ++ پروگرام ہے۔ آپ ریپڈ ایکس ایم ایل لائبریری ڈاؤن لوڈ کرسکتے ہیں۔ یہاں۔ .

#شامل کریں
#شامل کریں
#شامل کریں
#شامل کریں 'Rapidxml.hpp'

استعمال کرتے ہوئے نام کی جگہگھنٹے؛
استعمال کرتے ہوئے نام کی جگہریپڈ ایکس ایم ایل؛


xml_documentدستاویز
xml_node *root_node= خالی؛

intمرکزی(باطل)
{
لاگت << 'nمیرے طلباء کا ڈیٹا تجزیہ کرنا (sample.xml) ..... ' <<endl؛

// sample.xml فائل پڑھیں۔
ifstream فائل('sample.xml')؛
ویکٹر<چار>بفر((istreambuf_iterator<چار>(فائل))، istreambuf_iterator<چار>())؛
بفرپیچھے دھکیلو('')؛

// بفر پارس کریں۔
دستاویزتجزیہ<>(&بفر[])؛

// جڑ نوڈ تلاش کریں
root_node=دستاویزپہلا_نوڈ('MyStudentsData')؛

// طلباء کے نوڈس پر تکرار کریں۔
کے لیے (xml_node *طالب علم_نوڈ=root_node->پہلا_نوڈ('طالب علم')؛طالب علم_نوڈ؛طالب علم_نوڈ=طالب علم_نوڈ->اگلا_ بھائی())
{
لاگت << 'nطالب علم کی قسم = ' <<طالب علم_نوڈ->first_attribute('طالب علم کی قسم')->قدر()؛
لاگت <<endl؛

// طالب علموں کے ناموں پر عمل کریں۔
کے لیے(xml_node *طالب علم کا نام_نوڈ=طالب علم_نوڈ->پہلا_نوڈ('نام')؛طالب علم کا نام_نوڈ؛طالب علم کا نام_نوڈ=طالب علم کا نام_نوڈ->اگلا_ بھائی())
{
لاگت << 'طالب علم کا نام =' <<طالب علم کا نام_نوڈ->قدر()؛
لاگت <<endl؛
}
لاگت <<endl؛
}

واپسی ؛
}

مثال 2: PugiXML کا استعمال کرتے ہوئے XML کو C ++ میں تجزیہ کریں۔

اس مثال کے پروگرام میں ، ہم دکھائیں گے کہ C ++ میں PugiXML لائبریری کا استعمال کرتے ہوئے xml کی تجزیہ کیسے کریں۔ یہاں ان پٹ XML فائل ہے (sample.xml):

ورژن='1.0' انکوڈنگ='UTF-8' اسٹینڈ='نہیں' ؟>

فارمیٹ ورژن۔='1'>

>

نام۔='جان' ٹائپ کریں۔='پارٹ ٹائم'>

>

نام۔='شان' ٹائپ کریں۔='پوراوقت'>

>

نام۔='سارہ' ٹائپ کریں۔='پارٹ ٹائم'>

>

>

>

اس مثال کے پروگرام میں ، ہم دکھائیں گے کہ C ++ میں pugixml لائبریری کا استعمال کرتے ہوئے xml کی تجزیہ کیسے کریں۔ آپ PugiXML لائبریری سے ڈاؤن لوڈ کر سکتے ہیں۔ یہاں۔ .

#شامل کریں
#شامل کریں 'pugixml.hpp'

استعمال کرتے ہوئے نام کی جگہگھنٹے؛
استعمال کرتے ہوئے نام کی جگہپگی؛

intمرکزی()
{
لاگت << 'nملازمین کا ڈیٹا تجزیہ کرنا (sample.xml) .....nn'؛


xml_document دستاویز؛

// XML فائل لوڈ کریں۔
اگر (!دستاویزload_file('sample.xml')) واپسی -؛

xml_node ٹولز۔=دستاویزبچہ('ایمپلائز ڈیٹا').بچہ('ملازمین')؛


کے لیے (xml_node_iterator اسے=اوزار.شروع کریں()؛یہ!=اوزار.ختم()؛ ++۔یہ)
{
لاگت << 'ملازمین:'؛

کے لیے (xml_attribute_iterator ait=یہ->صفات_ شروع()؛تعلق رکھنے والا!=یہ->صفات_ ختم()؛ ++۔تعلق رکھنے والا)
{
لاگت << '' <<تعلق رکھنے والا->نام() << '=' <<تعلق رکھنے والا->قدر()؛
}

لاگت <<endl؛
}

لاگت <<endl؛

واپسی ؛

}

مثال 3: TMLX کا استعمال کرتے ہوئے XML کو C ++ میں تجزیہ کریں۔

اس مثال کے پروگرام میں ، ہم دکھائیں گے کہ CML میں TinyXML لائبریری کا استعمال کرتے ہوئے xml کی تجزیہ کیسے کریں۔ یہاں ان پٹ XML فائل ہے (sample.xml):

ورژن='1.0' انکوڈنگ='utf-8'؟>

>

>جان>

>شان>

>سارہ>

>

اس مثال کے پروگرام میں ، ہم دکھائیں گے کہ CML میں TinyXML لائبریری کا استعمال کرتے ہوئے xml کی تجزیہ کیسے کریں۔ آپ TinyXML لائبریری سے ڈاؤن لوڈ کر سکتے ہیں۔ یہاں۔ .

#شامل کریں
#شامل کریں
#شامل کریں
#شامل کریں 'tinyxml2.cpp'

استعمال کرتے ہوئے نام کی جگہگھنٹے؛
استعمال کرتے ہوئے نام کی جگہtinyxml2؛


intمرکزی(باطل)
{
لاگت << 'nمیرے طلباء کا ڈیٹا تجزیہ کرنا (sample.xml) ..... ' <<endl؛

// sample.xml فائل پڑھیں۔
XMLDocument دستاویز؛
دستاویزلوڈ فائل۔( 'sample.xml' )؛

const چار*عنوان=دستاویزفرسٹ چائلڈ عنصر۔( 'MyStudentsData' )->فرسٹ چائلڈ عنصر۔( 'طالب علم' )->گیٹ ٹیکسٹ۔()؛
پرنٹ ایف( طالب علم کا نام:٪ sn'، عنوان)؛


ایکس ایم ایل ٹیکسٹ۔*ٹیکسٹ نوڈ=دستاویزLastChildElement۔( 'MyStudentsData' )->LastChildElement۔( 'طالب علم' )->فرسٹ چائلڈ۔()->ٹیکسٹ۔()؛
عنوان=ٹیکسٹ نوڈ->قدر()؛
پرنٹ ایف( طالب علم کا نام:٪ sn'، عنوان)؛


واپسی ؛
}

نتیجہ

اس مضمون میں ہم نے مختصر بحث کی ہے۔ XML اور XML کو C ++ میں تجزیہ کرنے کی تین مختلف مثالوں پر غور کیا۔ ٹنی ایکس ایم ایل ایکس ایم ایل ڈیٹا کو پارس کرنے کے لیے ایک کم سے کم لائبریری ہے۔ زیادہ تر پروگرامرز بنیادی طور پر XML ڈیٹا کو پارس کرنے کے لیے RapidXML یا PugiXML استعمال کرتے ہیں۔