சி ++ இல் எக்ஸ்எம்எல்லை பாகுபடுத்துவது எப்படி

How Parse Xml C



இந்த கட்டுரையில், சி ++ நிரலாக்க மொழியில் எக்ஸ்எம்எல்லை எவ்வாறு பாகுபடுத்துவது என்று விவாதிக்க உள்ளோம். சி ++ இல் எக்ஸ்எம்எல் பாகுபடுத்தும் பொறிமுறையைப் புரிந்துகொள்ள பல வேலை உதாரணங்களைக் காண்போம்.

எக்ஸ்எம்எல் என்றால் என்ன?

எக்ஸ்எம்எல் ஒரு மார்க்அப் மொழி மற்றும் முக்கியமாக தரவை ஒரு ஒழுங்கமைக்கப்பட்ட வழியில் சேமிப்பதற்கும் மாற்றுவதற்கும் பயன்படுத்தப்படுகிறது. எக்ஸ்எம்எல் என்பது விரிவாக்கக்கூடிய மார்க்அப் மொழியை குறிக்கிறது. இது HTML க்கு மிகவும் ஒத்திருக்கிறது. எக்ஸ்எம்எல் தரவை சேமித்து பரிமாற்றுவதில் முழுமையாக கவனம் செலுத்துகிறது, அதேசமயம் உலாவியில் தரவைக் காண்பிக்க HTML பயன்படுத்தப்படுகிறது.







ஒரு மாதிரி எக்ஸ்எம்எல் கோப்பு/எக்ஸ்எம்எல் தொடரியல்

இங்கே ஒரு மாதிரி XML கோப்பு:



பதிப்பு='1.0' குறியாக்கம்='utf-8'?>

>

மாணவர் வகை='பகுதி நேரம்'>

>டாம்>

>

மாணவர் வகை='முழு நேரம்'>

>டிரேக்>

>

>

HTML போலல்லாமல், இது குறிச்சொல் சார்ந்த மார்க்அப் மொழியாகும், மேலும் எக்ஸ்எம்எல் கோப்பில் நமது சொந்த குறிச்சொல்லை வரையறுக்கலாம். மேலே உள்ள எடுத்துக்காட்டில், எங்களிடம் பல பயனர் வரையறுக்கப்பட்ட குறிச்சொற்கள் உள்ளன. ஒவ்வொரு குறிச்சொல்லும் அதனுடன் தொடர்புடைய முடிவைக் கொண்டிருக்கும். என்பதற்கான முடிவு குறி. நாம் தரவை ஒழுங்கமைக்க விரும்பும் பல பயனர் வரையறுக்கப்பட்ட குறிச்சொற்களை நாம் வரையறுக்கலாம்.



சி ++ இல் பார்சிங் நூலகங்கள்:

பெரும்பாலான உயர்மட்ட நிரலாக்க மொழிகளில் எக்ஸ்எம்எல் தரவை பாகுபடுத்த பல்வேறு நூலகங்கள் உள்ளன. சி ++ விதிவிலக்கல்ல. XML தரவை பாகுபடுத்த மிகவும் பிரபலமான C ++ நூலகங்கள் இங்கே:





  1. ரேபிட்எக்ஸ்எம்எல்
  2. PugiXML
  3. TinyXML

பெயர் குறிப்பிடுவது போல, RapidXML முக்கியமாக வேகத்தில் கவனம் செலுத்துகிறது, மேலும் இது ஒரு DOM பாணி பாகுபடுத்தும் நூலகமாகும். PugiXML யூனிகோட் மாற்றத்தை ஆதரிக்கிறது. நீங்கள் UTF-16 ஆவணத்தை UTF-8 க்கு மாற்ற விரும்பினால் PugiXML ஐப் பயன்படுத்த விரும்பலாம். டைனிஎக்ஸ்எம்எல் என்பது எக்ஸ்எம்எல் தரவை அலசுவதற்கான குறைந்தபட்ச பதிப்பாகும், முந்தைய இரண்டை விட வேகமாக இல்லை. நீங்கள் வேலையைச் செய்ய விரும்பினால், வேகத்தைப் பற்றி கவலைப்படாவிட்டால், நீங்கள் டைனிஎக்ஸ்எம்எல்லைத் தேர்வு செய்யலாம்.

எடுத்துக்காட்டுகள்
இப்போது, ​​C ++ இல் உள்ள XML மற்றும் XML பாகுபடுத்தும் நூலகங்களைப் பற்றிய அடிப்படை புரிதல் எங்களிடம் உள்ளது. C ++ இல் xml கோப்பை அலசுவதற்கு இப்போது சில உதாரணங்களைப் பார்ப்போம்:



  • எடுத்துக்காட்டு -1: RapidXML ஐப் பயன்படுத்தி C ++ இல் XML ஐப் பாகுபடுத்தவும்
  • எடுத்துக்காட்டு -2: PugiXML ஐப் பயன்படுத்தி C ++ இல் XML ஐப் பகுக்கவும்
  • எடுத்துக்காட்டு -3: டைனிஎக்ஸ்எம்எல்லைப் பயன்படுத்தி சி ++ இல் எக்ஸ்எம்எல் பாகுபடுத்தவும்

இந்த ஒவ்வொரு உதாரணத்திலும், ஒரு மாதிரி XML கோப்பை அலசுவதற்கு அந்தந்த நூலகங்களைப் பயன்படுத்துவோம்.

எடுத்துக்காட்டு -1: RapidXML ஐப் பயன்படுத்தி C ++ இல் XML ஐப் பாகுபடுத்தவும்

இந்த எடுத்துக்காட்டு திட்டத்தில், C ++ இல் RapidXML நூலகத்தைப் பயன்படுத்தி xml ஐ எவ்வாறு பாகுபடுத்துவது என்பதை நாங்கள் காண்பிப்போம். இங்கே உள்ளீடு XML கோப்பு (மாதிரி. Xml):

பதிப்பு='1.0' குறியாக்கம்='utf-8'?>

>

மாணவர் வகை='பகுதி நேரம்'>

>ஜான்>

>

மாணவர் வகை='முழு நேரம்'>

>சீன்>

>

மாணவர் வகை='பகுதி நேரம்'>

>சாரா>

>

>

C ++ ஐப் பயன்படுத்தி மேலே உள்ள XML கோப்பை அலசுவதே எங்கள் குறிக்கோள். ரேபிட்எக்ஸ்எம்எல் பயன்படுத்தி எக்ஸ்எம்எல் தரவை பாகுபடுத்த சி ++ நிரல் இங்கே. நீங்கள் RapidXML நூலகத்தை பதிவிறக்கம் செய்யலாம் இங்கே .

#சேர்க்கிறது
#சேர்க்கிறது
#சேர்க்கிறது
#விரைவு xml.hpp ஐ சேர்க்கவும்

பயன்படுத்தி பெயர்வெளிமணி;
பயன்படுத்தி பெயர்வெளிவிரைவு xml;


xml_ ஆவணம்doc
xml_node *ரூட்_நோடு= ஏதுமில்லை;

intமுக்கிய(வெற்றிடம்)
{
செலவு << ' nஎனது மாணவர்களின் தரவை அலசுகிறது (மாதிரி. Xml) ..... ' <<endl;

// மாதிரி. Xml கோப்பைப் படியுங்கள்
ifstream the file('மாதிரி. xml');
திசையன்<கரி>இடையகம்((istreambuf_iterator<கரி>(கோப்பு)), istreambuf_iterator<கரி>());
இடையகம்.பின்னால் தள்ளு(' 0');

// இடையகத்தை அலசவும்
docபகுப்பு<0>(&இடையகம்[0]);

// ரூட் முனை கண்டுபிடிக்கவும்
ரூட்_நோடு=docமுதல்_முனை('MyStudentsData');

// மாணவர் முனைகள் மீது திரும்பவும்
க்கான (xml_node *மாணவர்_முனை=ரூட்_நோடு->முதல்_முனை('மாணவர்');மாணவர்_முனை;மாணவர்_முனை=மாணவர்_முனை->அடுத்த_தம்பி())
{
செலவு << ' nமாணவர் வகை = ' <<மாணவர்_முனை->முதல்_பாத்திரம்('மாணவர் வகை')->மதிப்பு();
செலவு <<endl;

// மாணவர் பெயர்கள் மீது தொடர்பு கொள்ளுங்கள்
க்கான(xml_node *மாணவர்_ பெயர்_ முனை=மாணவர்_முனை->முதல்_முனை('பெயர்');மாணவர்_ பெயர்_ முனை;மாணவர்_ பெயர்_ முனை=மாணவர்_ பெயர்_ முனை->அடுத்த_தம்பி())
{
செலவு << 'மாணவர் பெயர் =' <<மாணவர்_ பெயர்_ முனை->மதிப்பு();
செலவு <<endl;
}
செலவு <<endl;
}

திரும்ப 0;
}

எடுத்துக்காட்டு -2: PugiXML ஐப் பயன்படுத்தி C ++ இல் XML ஐப் பகுக்கவும்

இந்த எடுத்துக்காட்டு திட்டத்தில், C ++ இல் PugiXML நூலகத்தைப் பயன்படுத்தி xml ஐ எவ்வாறு பாகுபடுத்துவது என்பதை நாங்கள் காண்பிப்போம். இங்கே உள்ளீடு XML கோப்பு (மாதிரி. Xml):

பதிப்பு='1.0' குறியாக்கம்='யுடிஎஃப் -8' தனித்த='இல்லை' ?>

FormatVersion='1'>

>

பெயர்='ஜான்' வகை='பகுதி நேரம்'>

>

பெயர்='சீன்' வகை='முழு நேரம்'>

>

பெயர்='சாரா' வகை='பகுதி நேரம்'>

>

>

>

இந்த எடுத்துக்காட்டு திட்டத்தில், C ++ இல் pugixml நூலகத்தைப் பயன்படுத்தி xml ஐ எவ்வாறு பாகுபடுத்துவது என்பதை நாங்கள் காண்பிப்போம். நீங்கள் PugiXML நூலகத்தை பதிவிறக்கம் செய்யலாம் இங்கே .

#சேர்க்கிறது
#'pugixml.hpp' ஐ சேர்க்கவும்

பயன்படுத்தி பெயர்வெளிமணி;
பயன்படுத்தி பெயர்வெளிபுகி;

intமுக்கிய()
{
செலவு << ' nபாகுபடுத்தும் ஊழியர்களின் தரவு (மாதிரி. Xml) ..... n n';


xml_ ஆவண ஆவணம்;

// XML கோப்பை ஏற்றவும்
என்றால் (!docload_file('மாதிரி. xml')) திரும்ப -1;

xml_node கருவிகள்=docகுழந்தை('ஊழியர் தரவு').குழந்தை('ஊழியர்கள்');


க்கான (xml_node_iterator அது=கருவிகள்.தொடங்க();அது!=கருவிகள்.முடிவு(); ++அது)
{
செலவு << ஊழியர்கள்: ';

க்கான (xml_attribute_iterator ait=அது->பண்புக்கூறுகள்_தொடங்கு();சொந்தமானது!=அது->பண்புக்கூறுகள்_முடிவு(); ++சொந்தமானது)
{
செலவு << '' <<சொந்தமானது->பெயர்() << '=' <<சொந்தமானது->மதிப்பு();
}

செலவு <<endl;
}

செலவு <<endl;

திரும்ப 0;

}

எடுத்துக்காட்டு -3: டைனிஎக்ஸ்எம்எல்லைப் பயன்படுத்தி சி ++ இல் எக்ஸ்எம்எல் பாகுபடுத்தவும்

இந்த எடுத்துக்காட்டு திட்டத்தில், C ++ இல் TinyXML நூலகத்தைப் பயன்படுத்தி xml ஐ எவ்வாறு பாகுபடுத்துவது என்பதை நாங்கள் காண்பிப்போம். இங்கே உள்ளீடு XML கோப்பு (மாதிரி. Xml):

பதிப்பு='1.0' குறியாக்கம்='utf-8'?>

>

>ஜான்>

>சீன்>

>சாரா>

>

இந்த எடுத்துக்காட்டு திட்டத்தில், C ++ இல் TinyXML நூலகத்தைப் பயன்படுத்தி xml ஐ எவ்வாறு பாகுபடுத்துவது என்பதை நாங்கள் காண்பிப்போம். நீங்கள் TinyXML நூலகத்தை பதிவிறக்கம் செய்யலாம் இங்கே .

#சேர்க்கிறது
#சேர்க்கிறது
#சேர்க்கிறது
#'tinyxml2.cpp' ஐ சேர்க்கவும்

பயன்படுத்தி பெயர்வெளிமணி;
பயன்படுத்தி பெயர்வெளிtinyxml2;


intமுக்கிய(வெற்றிடம்)
{
செலவு << ' nஎனது மாணவர்களின் தரவை அலசுகிறது (மாதிரி. Xml) ..... ' <<endl;

// மாதிரி. Xml கோப்பைப் படியுங்கள்
எக்ஸ்எம்எல் ஆவண ஆவணம்;
docLoadFile( 'மாதிரி. xml' );

கான்ஸ்ட் கரி*தலைப்பு=docமுதல் குழந்தை உறுப்பு( 'MyStudentsData' )->முதல் குழந்தை உறுப்பு( 'மாணவர்' )->GetText();
printf( மாணவர் பெயர்: %s n', தலைப்பு);


எக்ஸ்எம்எல் உரை*உரை முனை=docLastChildElement( 'MyStudentsData' )->LastChildElement( 'மாணவர்' )->முதல் குழந்தை()->ToText();
தலைப்பு=உரை முனை->மதிப்பு();
printf( மாணவர் பெயர்: %s n', தலைப்பு);


திரும்ப 0;
}

முடிவுரை

இந்த கட்டுரையில், நாங்கள் சுருக்கமாக விவாதித்தோம் எக்ஸ்எம்எல் மற்றும் சி ++ இல் எக்ஸ்எம்எல்லை எப்படி பாகுபடுத்துவது என்பதற்கான மூன்று வெவ்வேறு உதாரணங்களைப் பார்த்தேன். டைனிஎக்ஸ்எம்எல் என்பது எக்ஸ்எம்எல் தரவை அலசுவதற்கான குறைந்தபட்ச நூலகமாகும். பெரும்பாலான புரோகிராமர்கள் முக்கியமாக XML தரவை அலசுவதற்கு RapidXML அல்லது PugiXML ஐ பயன்படுத்துகின்றனர்.