XML String weiterverarbeiten in C++ CGI-Skript

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • XML String weiterverarbeiten in C++ CGI-Skript

    Hallo,

    ich bin gerade an einem CGI-Skript in C++ zu Programmieren, welches XML Daten empfängt und verarbeiten soll, ebenso dann wieder XML-Daten an das Programm zurückliefert.
    Ich habe jedoch nun ein Problem und entweder stehe ich aufm Schlauch oder ähnliches vielleicht könnt Ihr mir helfen. Ich habe als erstes mal die libxml2 Bibliothek verwendet, kompilieren
    funktioniert auch ohne Probleme, wenn ich das Skript jedoch aufrufe stürzt es ab.

    Quellcode

    1. #include <stdio.h>
    2. #include <stdlib.h>
    3. #include "URLEncode.h"
    4. #include "URLDecode.h"
    5. #include "libxml/parser.h"
    6. //Namespaces einstellen
    7. using namespace std;
    8. using std::ofstream;
    9. //Mainprogramm
    10. void main(){
    11. string eingabe, ausgabe;
    12. char buffer[10];
    13. bool login = false;
    14. cin >> eingabe;
    15. eingabe = URLDecode(eingabe); //convertiert den URL String in einen lesbaren String um
    16. xmlDocPtr xmlinsert = xmlReadDoc((xmlChar *)eingabe.c_str(),NULL,NULL,XML_PARSE_DTDVALID);
    17. ofstream fout( "login.log", ios::app );
    18. _strdate_s(buffer);
    19. fout << buffer << " ";
    20. _strtime_s(buffer);
    21. fout << buffer << " -";
    22. fout << " Loginanfrage gestartet von (HOST) :" << endl;
    23. if (xmlinsert == NULL)
    24. {
    25. _strdate_s(buffer);
    26. fout << buffer << " ";
    27. _strtime_s(buffer);
    28. fout << buffer << " -";
    29. fout << " XML Stream konnte nicht geladen werden" << endl;
    30. login = false;
    31. }else
    32. {
    33. xmlFreeDoc(xmlinsert);
    34. login = true;
    35. }
    36. if (login == true)
    37. {
    38. ausgabe = "<?xml version=\"1.0\" ?>\n";
    39. ausgabe += "<!DOCTYPE LOGIN SYSTEM \"http://srv-gst-05:8080/emis.dtd\">\n";
    40. ausgabe += "<LOGIN>\n";
    41. ausgabe += "<USER>user</USER>\n";
    42. ausgabe += "<SID>34lkwe49fkfgklwegi4w5ewrjk3rter</SID>\n";
    43. ausgabe += "<TIMEOUT>300</TIMEOUT>\n";
    44. ausgabe += "</LOGIN>\n";
    45. }else {
    46. ausgabe = "<?xml version=\"1.0\" ?>\n";
    47. ausgabe += "<!DOCTYPE ERROR SYSTEM \"http://srv-gst-05:8080/emis.dtd\">\n";
    48. ausgabe += "<ERROR>\n";
    49. ausgabe += "<ID>2001</ID>\n";
    50. ausgabe += "<DESCRIPTION>Unknown Server request send by client.</DESCRIPTION>\n";
    51. ausgabe += "</ERROR>\n";
    52. }
    53. ausgabe = URLEncode(ausgabe);
    54. cout << "Content-type: application/xml" << endl;
    55. cout << endl;
    56. cout << ausgabe << endl; // Die Daten werden zurueck gegeben
    57. }
    Alles anzeigen