Wie man XML in C ++ analysiert

Wie man XML in C ++ analysiert

In diesem Artikel werden wir diskutieren, wie Sie XML in C ++ - Programmiersprache analysieren können. Wir werden mehrere Arbeitsbeispiele sehen, um den XML -Parsing -Mechanismus in C zu verstehen++.

Was ist XML?

XML ist eine Markup -Sprache und wird hauptsächlich zum Speichern und Übertragen von Daten auf organisierte Weise verwendet. XML steht für Extensible Markup -Sprache. Es ist HTML sehr ähnlich. Der XML konzentriert sich vollständig auf das Speichern und Übertragen der Daten, während die HTML zum Anzeigen der Daten auf dem Browser verwendet wird.

Eine Beispiel -XML -Datei/XML -Syntax

Hier ist eine Beispiel -XML -Datei:




Tom


Erpel

Im Gegensatz zu HTML ist es eine Tag-orientierte Markup-Sprache, und wir können unser eigenes Tag in einer XML-Datei definieren. Im obigen Beispiel haben wir mehrere benutzerdefinierte Tags wie "" ". Jedes Tag hat das entsprechende End -Tag. "" Ist das End -Tag für "". Wir können so viele benutzerdefinierte Tags definieren, wie wir die Daten organisieren möchten.

Analyse von Bibliotheken in C ++:

Es gibt verschiedene Bibliotheken, die XML-Daten in den meisten hochrangigen Programmiersprachen analysieren können. C ++ ist keine Ausnahme. Hier sind die beliebtesten C ++ - Bibliotheken, um XML -Daten zu analysieren:

  1. Rapidxml
  2. Pugixml
  3. Tinyxml

Wie der Name schon sagt, konzentriert sich der RapidXML hauptsächlich auf Geschwindigkeit und ist eine Dom -Stil -Parsing -Bibliothek. Pugixml unterstützt die Unicode -Konvertierung. Möglicherweise möchten Sie PugixML verwenden, wenn Sie UTF-16 DOC in UTF-8 konvertieren möchten. TinyXML ist eine bare-minimum. Wenn Sie einfach den Job erledigen möchten und sich nicht um die Geschwindigkeit kümmern möchten, können Sie TinyXML wählen.

Beispiele
Jetzt haben wir ein grundlegendes Verständnis von XML- und XML -Parsing -Bibliotheken in C++. Schauen wir uns nun einige Beispiele an, um die XML -Datei in C ++ zu analysieren:

  • Beispiel-1: XML in C ++ unter Verwendung von RapidXML analysieren
  • Beispiel-2: Mit PugixML in C ++ in C ++ analysieren
  • Beispiel-3: XML in C ++ analysieren mit TinyXML

In jedem dieser Beispiele verwenden wir die jeweiligen Bibliotheken, um eine Beispiel -XML -Datei zu analysieren.

Beispiel-1: XML in C ++ unter Verwendung von RapidXML analysieren

In diesem Beispielprogramm werden wir demonstrieren, wie XML mithilfe der RapidXML -Bibliothek in C analysiert werden kann++. Hier ist die Eingabe -XML -Datei (Beispiel.xml):




John


Sean


Sarah

Unser Ziel hier ist es, die obige XML -Datei mit C zu analysieren++. Hier ist das C ++ - Programm zur Analyse von XML -Daten mit RapidXML. Sie können die RapidXML -Bibliothek von hier herunterladen.

#enthalten
#enthalten
#enthalten
#include "RapidXML.HPP "
Verwenden von Namespace STD;
Verwenden von Namespace Rapidxml;
xml_document doc
xml_node * root_node = null;
int main (void)

Cout << "\nParsing my students data (sample.xml)… " << endl;
// das Beispiel lesen.XML -Datei
ifstream thefile ("Probe.xml ");
Vektor Puffer ((iStreambuf_iterator(TheFile)), iStreambuf_iterator());
Puffer.push_back ('\ 0');
// den Puffer analysieren
Dokument.analysieren<0>(& buffer [0]);
// Finden Sie den Stammknoten heraus
root_node = doc.First_Node ("MystudentsData");
// über die Studentenknoten iterieren
for (xml_node * student_node = root_node-> first_node ("student");
student_node; student_node = student_node-> next_sibling ()))

Cout << "\nStudent Type = " <<
student_node-> first_attribute ("student_type")-> value ();
Cout << endl;
// Über die Schülernamen interadieren
for (xml_node * student_name_node = student_node-> first_node ("name");
student_name_node; student_name_node = student_name_node-> next_sibling ())

Cout << "Student Name = " << student_name_node->Wert();
Cout << endl;

Cout << endl;

Rückkehr 0;

Beispiel-2: Mit PugixML in C ++ in C ++ analysieren

In diesem Beispielprogramm werden wir demonstrieren, wie XML mithilfe der PugixML -Bibliothek in C analysiert werden kann++. Hier ist die Eingabe -XML -Datei (Beispiel.xml):











In diesem Beispielprogramm werden wir demonstrieren, wie XML mithilfe der PugixML -Bibliothek in C analysiert werden kann++. Sie können die Pugixml -Bibliothek von hier herunterladen.

#enthalten
#include "Pugixml.HPP "
Verwenden von Namespace STD;
Verwenden von Namespace Pugi;
int main ()

Cout << "\nParsing employees data (sample.xml)… \n\n";
xml_document doc;
// die XML -Datei laden
Wenn (!Dokument.load_file ("sample.xml ")) return -1;
xml_node tools = doc.Kind ("EmployeesData").Kind ("Mitarbeiter");
für (xml_node_iterator it = tools.Start(); Es != Werkzeuge.Ende(); ++ es)

Cout << "Employees:";
für (xml_attribute_iterator ait = it-> attributes_begin ();
ait != IT-> Attribute_end (); ++ ait)

Cout << " " << ait->Name() <<
"=" << ait->Wert();

Cout << endl;

Cout << endl;
Rückkehr 0;

Beispiel-3: XML in C ++ analysieren mit TinyXML

In diesem Beispielprogramm werden wir demonstrieren, wie XML mit der TinyXML -Bibliothek in C analysiert werden kann++. Hier ist die Eingabe -XML -Datei (Beispiel.xml):



John
Sean
Sarah

In diesem Beispielprogramm werden wir demonstrieren, wie XML mit der TinyXML -Bibliothek in C analysiert werden kann++. Sie können die TinyXML -Bibliothek von hier herunterladen.

#enthalten
#enthalten
#enthalten
#Include "TinyXml2.CPP "
Verwenden von Namespace STD;
Verwenden von Namespace TinyXML2;
int main (void)

Cout << "\nParsing my students data (sample.xml)… " << endl;
// das Beispiel lesen.XML -Datei
Xmldocument doc;
Dokument.LoadFile ("Probe.xml ");
const char* title = doc.FirstChildElement ("MystudententsData")-> FirstChildElement ("Student")-> getText ();
printf ("Schülername: %s \ n", Titel);
XmlText* TextNode = doc.LastChildElement ("MystudententsData")-> LastChildElement ("Student")-> FirstChild ()-> TETEXT ();
title = TextNode-> value ();
printf ("Schülername: %s \ n", Titel);
Rückkehr 0;

Abschluss

In diesem Artikel haben wir XML kurz diskutiert und drei verschiedene Beispiele für die Analyse von XML in C untersucht++. TinyXML ist eine minimalistische Bibliothek für das Parsen von XML -Daten. Die meisten Programmierer verwenden hauptsächlich die RapidXML oder Pugixml, um XML -Daten zu analysieren.