Jede Hilfe wäre willkommen, auch wenn es nur eine schnelle Idee ist.Parsen einer XML-Datei mit C++ - Stacks/Queues
Keine librarys (außer stl) oder externe Parsern
Ich soll ein C++ Programm erstellen, die die Daten einer XML-Datei gelesen wird und es im Speicher speichern, aber ich bin viel Mühe, einen Weg zu finden, um mach das. Ich hatte gehofft, dass ich hier von jemandem Hilfe bekommen könnte. Auch Regex sollte verwendet werden, um die Dateidaten zu erkennen oder aufzuteilen.
Tag Namen nicht aufbewahrt werden müssen, obwohl es ideal wäre, nur die Verschachtelung Daten, werden alle Daten als Text (string) gespeichert ist
Dies ist ein Beispiel, das Sie zeigt, was ich meine von Schornsteinen und Warteschlangen. Dies müsste jedoch nicht spezifisch sein.
<House> // tag: push <House> on stack
<Info> // tag: push <Coordinates> on stack
<Code>ABE</Code> // element: push_back on element queue
<City>Allentown</City> // element: push_back on element queue
<ID>PA</ID> // element: puch_back on element queue
</Info> // terminator: pop stack and complete node in queue
<Exact> // tag: push <Exact> on stack
<X>40.65</X> // element: push_back on element queue
<Y>75.43</Y> // element: push_back on element queue
</Exact> // terminator: pop stack and complete node in queue
</House> // terminator: pop stack and complete node in queue
Bisher ist es ziemlich lahm, aber ich habe nur in der Lage, die Datei einzurichten, um Zeile für Zeile gelesen werden und die Header überspringen, indem es mit Regex wie diese Erkennung:
string fileline;
regex header("[<][?](.*?)[?][>]");
while (getline(ifstreamobj, fileline))
{
if (regex_match(fileline, header))
{
cout<<"Skipping what appears to be a header"<<endl;
}
//?
}
cout << "END OF FILE, EOF" << endl;
I Ich weiß nicht wirklich, was ich machen soll. Ich denke, der Stapel würde ein Stapel von Strings sein, wo der Tag-Namen geschoben werden würde/tauchte
Und dann würde die Warteschlange für die eigentlichen Daten werden zwischen den Tags
Ich schlage vor, dass Sie einige der vorhandenen XML-Parser verwenden. [Diese SO Antwort] (http://stackoverflow.com/a/9387612/1593881) scheint eine schöne Sammlung zu haben. –
Echte XML-Analyse ist kein Witz, müssen Sie nur eine Teilmenge von XML analysieren? Auch Ihr Xml ist falsch ' 40,65'. –
user657267
Whoops, jetzt behoben.Ich muss die gesamte XML-Datei wie dargestellt analysieren, aber ich würde nicht tiefer gehen als vielleicht 3 verschachtelte – fman