Różnice między wybraną wersją a wersją aktualną.
Both sides previous revision Previous revision Next revision | Previous revision Next revision Both sides next revision | ||
xerces_dom [2008/04/15 01:18] kmioduszewski |
xerces_dom [2008/04/15 10:19] kmioduszewski |
||
---|---|---|---|
Linia 139: | Linia 139: | ||
</code> | </code> | ||
+ | |||
+ | |||
+ | |||
Linia 194: | Linia 197: | ||
//klasa pomocnicza ułatwiająca współpracę z XMLCh* | //klasa pomocnicza ułatwiająca współpracę z XMLCh* | ||
class UniString { | class UniString { | ||
- | public : | + | private : |
- | UniString(const XMLCh* const str) | + | char* cString; |
+ | XMLCh* xmlString; | ||
+ | |||
+ | public : | ||
+ | UniString(const XMLCh* const str) | ||
: | : | ||
cString(xercesc::XMLString::transcode(str)), | cString(xercesc::XMLString::transcode(str)), | ||
Linia 227: | Linia 234: | ||
return(s); | return(s); | ||
} | } | ||
- | |||
- | private : | ||
- | char* cString; | ||
- | XMLCh* xmlString; | ||
}; | }; | ||
Linia 277: | Linia 280: | ||
}; | }; | ||
</code> | </code> | ||
+ | ''parser.cpp'' FIXME | ||
+ | <code cpp> | ||
+ | #include "support.h" | ||
+ | xercesc::DOMDocument* parseXML() { | ||
+ | xercesc::XercesDOMParser* parser = new xercesc::XercesDOMParser(); | ||
+ | parser->setValidationScheme(xercesc::XercesDOMParser::Val_Auto); | ||
+ | parser->setDoNamespaces(true); | ||
+ | |||
+ | xercesc::ErrorHandler* errHandler = (xercesc::ErrorHandler*) new myErrorHandler(); | ||
+ | parser->setErrorHandler(errHandler); | ||
+ | |||
+ | UniString src = UniString("file.xml"); | ||
+ | try { | ||
+ | parser->parse(src.toXMLString()); | ||
+ | } | ||
+ | catch (...) { | ||
+ | //... | ||
+ | } | ||
+ | |||
+ | if(parser->getErrorCount()==0) { | ||
+ | return parser->getDocument(); | ||
+ | } else { | ||
+ | return NULL; | ||
+ | } | ||
+ | } | ||
+ | |||
+ | int main() { | ||
+ | try { | ||
+ | xercesc::XMLPlatformUtils::Initialize(); | ||
+ | } | ||
+ | catch (const xercesc::XMLException& e) { | ||
+ | std::cerr << UniString(e.getMessage()) << std::endl; | ||
+ | return 1; | ||
+ | } | ||
+ | |||
+ | xercesc::DOMDocument* xmlDoc = parseXML(); | ||
+ | if(xmlDoc == NULL) | ||
+ | return -1; | ||
+ | |||
+ | |||
+ | xercesc::XMLPlatformUtils::Terminate(); | ||
+ | |||
+ | int a; | ||
+ | std::cin >> a; | ||
+ | return 0; | ||
+ | } | ||
+ | </code> | ||
<code cpp> | <code cpp> | ||
//... | //... |