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 00:37] kmioduszewski |
xerces_dom [2008/04/15 01:06] kmioduszewski |
||
---|---|---|---|
Linia 139: | Linia 139: | ||
</code> | </code> | ||
+ | |||
+ | |||
+ | |||
+ | |||
Linia 158: | Linia 162: | ||
<!DOCTYPE notes SYSTEM "note.dtd"> | <!DOCTYPE notes SYSTEM "note.dtd"> | ||
<notes owner="John Doe"> | <notes owner="John Doe"> | ||
- | |||
<note date="21/02/2008"> | <note date="21/02/2008"> | ||
<from>Jani</from> | <from>Jani</from> | ||
Linia 183: | Linia 186: | ||
Klasy pomocnicze: | Klasy pomocnicze: | ||
<code cpp> | <code cpp> | ||
- | #include <xercesc/util/XMLString.hpp> | + | #include<string> |
+ | #include<xercesc/util/XMLString.hpp> | ||
- | //klasa pomocnicza przechowujaca nazwy tagów oraz atrybutów w formacie XMLCh* | + | //klasa pomocnicza ułatwiająca współpracę z XMLCh* |
- | class TagNames { | + | class UniString { |
- | public: | + | public : |
- | XMLCh* TAG_NOTES; | + | UniString(const XMLCh* const str) |
- | XMLCh* TAG_NOTE; | + | : |
- | XMLCh* TAG_FROM; | + | cString(xercesc::XMLString::transcode(str)), |
- | XMLCh* TAG_HEADING; | + | xmlString(xercesc::XMLString::replicate(str)) |
- | XMLCh* TAG_BODY; | + | {} |
- | + | ||
- | XMLCh* ATTR_OWNER; | + | UniString(const char* const str) |
- | XMLCh* ATTR_DATE; | + | : |
+ | cString(xercesc::XMLString::replicate(str)), | ||
+ | xmlString(xercesc::XMLString::transcode(str)) | ||
+ | {} | ||
- | TagNames() | + | UniString(const std::string& str) |
- | : | + | : |
- | TAG_NOTES(xercesc::XMLString::transcode("notes")), | + | cString(xercesc::XMLString::replicate(str.c_str())), |
- | TAG_NOTE(xercesc::XMLString::transcode("note")), | + | xmlString(xercesc::XMLString::transcode(str.c_str())) |
- | TAG_FROM(xercesc::XMLString::transcode("from")), | + | |
- | TAG_HEADING(xercesc::XMLString::transcode("heading")), | + | |
- | TAG_BODY(xercesc::XMLString::transcode("body")), | + | |
- | + | ||
- | ATTR_OWNER(xercesc::XMLString::transcode("owner")), | + | |
- | ATTR_DATE(xercesc::XMLString::transcode("date")) | + | |
{} | {} | ||
+ | |||
+ | ~UniString() | ||
+ | { | ||
+ | xercesc::XMLString::release(&cString); | ||
+ | xercesc::XMLString::release(&xmlString); | ||
+ | } | ||
- | ~TagNames() throw(){ | + | const char* toCString() { return cString; } |
- | + | const XMLCh* toXMLString() { return xmlString; } | |
- | try{ | + | |
- | xercesc::XMLString::release(&TAG_NOTES); | + | |
- | xercesc::XMLString::release(&TAG_NOTE); | + | |
- | xercesc::XMLString::release(&TAG_FROM); | + | |
- | xercesc::XMLString::release(&TAG_HEADING); | + | |
- | xercesc::XMLString::release(&TAG_BODY); | + | |
- | xercesc::XMLString::release(&ATTR_OWNER); | + | std::ostream& print(std::ostream& s) const |
- | xercesc::XMLString::release(&ATTR_DATE); | + | { |
- | }catch( ... ){ | + | s << cString; |
- | std::cerr << "TagNames destructor error" << std::endl ; | + | return(s); |
- | } | + | } |
- | } | + | |
- | } | + | private : |
+ | char* cString; | ||
+ | XMLCh* xmlString; | ||
+ | |||
+ | }; | ||
+ | |||
+ | std::ostream& operator<<( std::ostream& s, const UniString& str ) { return s << str.print(); } | ||
+ | |||
+ | //klasa pomocnicza przechowująca nazwy tagów oraz atrybutów | ||
+ | class docNames { | ||
+ | public: | ||
+ | const UniString TAG_NOTES; | ||
+ | const UniString TAG_NOTE; | ||
+ | const UniString TAG_FROM; | ||
+ | const UniString TAG_HEADING; | ||
+ | const UniString TAG_BODY; | ||
+ | |||
+ | const UniString ATTR_OWNER; | ||
+ | const UniString ATTR_DATE; | ||
+ | |||
+ | docNames() | ||
+ | : | ||
+ | TAG_NOTES("notes"), | ||
+ | TAG_NOTE("note"), | ||
+ | TAG_FROM("from"), | ||
+ | TAG_HEADING("heading"), | ||
+ | TAG_BODY("body"), | ||
+ | |||
+ | ATTR_OWNER("owner"), | ||
+ | ATTR_DATE("date") | ||
+ | {} | ||
+ | }; | ||
</code> | </code> | ||