Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » Software » XML lib

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: [ 1 ] > 2 <
010
10.12.2006, 01:38 Uhr
J-jayz-Z
Perl Crack ala Carte
(Operator)


Hmm, wirklich einfach, da sich Xerces exakt an die DOM Spezifikation hält, kann man auch die etwas bessere Java Dokumentation dafür nutzen. Mal ein kleines Beispiel:

C++:
#include <xercesc/parsers/XercesDOMParser.hpp>
#include <xercesc/dom/DOM.hpp>
#include <xercesc/util/XMLString.hpp>
#include <xercesc/util/PlatformUtils.hpp>

#include <iostream>
XERCES_CPP_NAMESPACE_USE

int main (int argc, char* args[]) {
    try {
        XMLPlatformUtils::Initialize();
    }
    catch (const XMLException& toCatch) {
        char* message = XMLString::transcode(toCatch.getMessage());
        std::cout << message << std::endl;
        XMLString::release(&message);
    }

    XercesDOMParser* parser = new XercesDOMParser();

    std::cout << "Parsing XML File..." << std::endl;

    std::string xmlFile = "C:\\foo.xml";

     try {
        parser->parse(xmlFile.c_str());
     }
     catch (const XMLException& toCatch) {
        char* message = XMLString::transcode(toCatch.getMessage());
        std::cout << message << std::endl;
        XMLString::release(&message);
     }
     catch (const DOMException& toCatch) {
        char* message = XMLString::transcode(toCatch.msg);
        std::cout << message << std::endl;
        XMLString::release(&message);
    }
    catch (...) {
        std::cout << "Unexpected Exception" << std::endl;
    }
    DOMDocument* doc = parser->getDocument();
    if(doc != 0)
    {
        std::cout << "You got the Document" << std::endl;
        XMLCh* rootElement = XMLString::transcode("bla");
        DOMNodeList* list = doc->getElementsByTagName(rootElement);
        for(int i = 0; i < list->getLength(); i++)
        {
            DOMElement* element = (DOMElement*)doc->getElementsByTagName(XMLString::transcode("bla"))->item(i);
            DOMNode* node = element->getElementsByTagName(XMLString::transcode("name"))->item(0);
            std::cout << XMLString::transcode(node->getTextContent()) << std::endl;
        }
    }
    delete parser;
    std::cin.get();
    return EXIT_SUCCESS;
}

Und die Datei dazu

C++:
<root>
    <bla>
        <name>test</name>
    </bla>
    <bla>
        <name>test2</name>
    </bla>
</root>


Wirklich gut und auch sauber zu programmieren...
--
perl -Mstrict -Mwarnings -e 'package blub; sub new { bless {} } sub bar {my $self=shift; $self->{bla}="66756e2d736f66742e6465"; return $self->{bla};} my $foo=blub->new();print "Hallo ";print pack("H*",$foo->bar()); print "\n"'
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
011
11.12.2006, 14:59 Uhr
J-jayz-Z
Perl Crack ala Carte
(Operator)


Noch ein Problem ...
Ich hab den Parser soweit fertig und wollte nun mysql++ nutzen um dies in die DB einzutragen. Allerdings bekomme ich, sobald ich mysql++.h includiere folgende Fehlermeldung:

C++:
c:\programme\microsoft platform sdk for windows xp sp2\include\msxml.h(9593) : error C2371: 'DOMDocument': Neudefinition; unterschiedliche Basistypen

Selbst wenn ich explicit sage:
C++:
using xercesc_2_7::DOMDocument;
bekomm ich die Meldung immer noch. Jemand ne Idee?
--
perl -Mstrict -Mwarnings -e 'package blub; sub new { bless {} } sub bar {my $self=shift; $self->{bla}="66756e2d736f66742e6465"; return $self->{bla};} my $foo=blub->new();print "Hallo ";print pack("H*",$foo->bar()); print "\n"'
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
012
11.12.2006, 15:08 Uhr
J-jayz-Z
Perl Crack ala Carte
(Operator)


Hmm, ein xercesc_2_7:OMDocument* document hat geholfen
--
perl -Mstrict -Mwarnings -e 'package blub; sub new { bless {} } sub bar {my $self=shift; $self->{bla}="66756e2d736f66742e6465"; return $self->{bla};} my $foo=blub->new();print "Hallo ";print pack("H*",$foo->bar()); print "\n"'
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: [ 1 ] > 2 <     [ Software ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: