{"id":34281482,"url":"https://github.com/graetz23/xmlcc","last_synced_at":"2025-12-16T23:04:23.101Z","repository":{"id":25287235,"uuid":"28713159","full_name":"graetz23/xmlcc","owner":"graetz23","description":"an ANSI C++ XML library keeping SAX interface and XML / DOM tree","archived":false,"fork":false,"pushed_at":"2024-05-03T03:36:06.000Z","size":428,"stargazers_count":3,"open_issues_count":1,"forks_count":2,"subscribers_count":1,"default_branch":"master","last_synced_at":"2024-05-03T10:10:14.042Z","etag":null,"topics":["ansi","composite-pattern","cpp","design-patterns","dom","html","html-generation","html-generator","html-parser","html-parsing","lib","library","object-oriented","object-oriented-design","platform-independent","xml","xml-generation","xml-generator","xml-parser","xml-parsing"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/graetz23.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2015-01-02T12:50:29.000Z","updated_at":"2024-05-03T03:36:10.000Z","dependencies_parsed_at":"2022-08-24T00:20:55.852Z","dependency_job_id":null,"html_url":"https://github.com/graetz23/xmlcc","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/graetz23/xmlcc","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/graetz23%2Fxmlcc","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/graetz23%2Fxmlcc/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/graetz23%2Fxmlcc/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/graetz23%2Fxmlcc/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/graetz23","download_url":"https://codeload.github.com/graetz23/xmlcc/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/graetz23%2Fxmlcc/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":27772609,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-12-16T02:00:10.477Z","response_time":57,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ansi","composite-pattern","cpp","design-patterns","dom","html","html-generation","html-generator","html-parser","html-parsing","lib","library","object-oriented","object-oriented-design","platform-independent","xml","xml-generation","xml-generator","xml-parser","xml-parsing"],"created_at":"2025-12-16T23:04:22.138Z","updated_at":"2025-12-16T23:04:23.095Z","avatar_url":"https://github.com/graetz23.png","language":"C++","readme":"## XMLCC\n\n### C++ library for generating, reading, and writing XML\n\n### Introduction\n\nXMLCC is an object-oriented C++ library for parsing, modifying, creating, and writing  the extensible markup language (XML) by implementing a kind of SAX interface and some kind of DOM tree. It is strongly object-oriented and based on [software design patterns](https://en.wikipedia.org/wiki/Software_design_pattern) for generating, searching, and parsing even *badly malformed* XML files.\n\nTwo parsers are available: a simple API for XML (SAX) parser for an event based parsing and a document object model (DOM) parser generating an object model tree.\n\nThe library provides an easy access to XML files.\n\n### Remarks\n\nThis library is - yet - a non validating, not - really - speed optimized for very large files, and explicit not dealing with file encodings.\n\nFor normal sized XMLs - arond 10 Mega Byte - xmlCC does a very fine job. However, if XML files get larger, there should be a different strategy for parsing. Currently xmlCC read char by char which allows for throwing an exception exactely at line and char number.\n\nFile encondings are overcome by C++'s local standard template libraries (STL). Futhermore xmlCC is written in ANSI / C++, so it has a true platform independency.\n\n### How To\n\nJust clone the repository and build it for some *unix or GNU/Linux* machines by:\n\n**git clone https://github.com/graetz23/xmlcc.git \u0026\u0026 cd xmlcc \u0026\u0026 make**\n\nSome **example using xmlcc** for **generating** simple **HTML**:\n\n```C++\nDOM::Root* xml = 0; // null pointer\nxml = new DOM::Root( \"xmlcc.html\", new DOM::Doctype( ), // used for file name\n  new DOM::Comment( \"XMLCC 1.01 20200307 Amara Faith\" ),\n  new DOM::Element( \"html\",\n    new DOM::Element( \"head\",\n      new DOM::Element( \"title\",\n        new DOM::Value( \"HTML generated by XMLCC\" ) ) ),\n    new DOM::Element( \"body\" ),\n    new DOM::Element( \"center\",\n      new DOM::Comment( \"HTML was generated by XMLCC\" ),\n      new DOM::Value( \"Hello\" ),\n      new DOM::Element( \"b\", new DOM::Value( \"WWW\" ) ),\n      new DOM::Value( \"from XMLCC\" ), new DOM::Element( \"br\" ),\n      new DOM::Element( \"a\",\n        new DOM::Attribute( \"href\",\n          \"https://github.com/graetz23/xmlcc/\" ),\n        new DOM::Value( \"visit project page\" )\n      )\n    )\n  )\n); // some composite with multiple decorators\n```\n\nNow **writing** the xml **to file**\n\n```C++\nstd::cout \u003c\u003c \"writing DOM tree to file .. \" \u003c\u003c std::flush;\nstd::fstream file; // open file\nfile.open( ( (char*)( xml-\u003egetStr( ).c_str( ) ) ), std::ios::out ); // some name\nfile \u003c\u003c xml; // overloaded operator; the DOM tree goes std::ostream\nfile.close( );\n```\nThe written file [looks like this](https://github.com/graetz23/xmlcc/tree/master/XMLCC/xmlcc.html)!\n\nDeleting all generated objects of the DOM tree:\n\n```C++\ndelete xml; // deletes recursively the complete DOM tree\n```\n\nand parsing an XML file to XMLCC's DOM tree:\n\n```C++\nXMLCC::DOM::Core core; // keeping methods for parsing 2 DOM tree\nXMLCC::DOM::Root* root = core.parseFile2DomTree( fileName ); // root of DOM tree\nif( root != 0 ) {\n  std::cout \u003c\u003c root \u003c\u003c std::flush \u003c\u003c std::endl; // DOM tree 2 std::ostream\n  delete root; // deletes complete DOM tree\n} // if root\ndelete root; // delete tree again\n```\n\n**.. have fun!**\n\n### LICENSE\n\n**XMLCC is distributed under the MIT License (MIT); this file is part of.**\n\n**Copyright (c) 2008-2025 Christian (graetz23@gmail.com)**\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n\n### VERSION\n\n*XMLCC is in version 1.01 20160106:*\n\n### CHANGE LOG\n\n20200307 version 1.01 :\n- updated copyright and contact\n- reworked the read me\n\n20160106 version 1.01 :\n- changed Makefile from subversion (svn) to git\n- added search() methods to DOM::Controller; searching up to seven hierarchies\n- CFG::Config class\n - first attempt for getting information from config DOM tree\n - implemented getters for section Config, Info, and System\n- TEST::Test class\n - added config file reader\n - implemented reading boolean values for test run\n- SYS::Exception removed the \"SYS::Excpetion::\" water marking\n - added / updated comments \u0026 minor changes in SYS::List\u003cT\u003e() template class\n- Updated Copyright by the years 2008-2018\n\n20150101 version 1.00 :\n- Release of version 1.00\n- changed copyright in the MIT License (MIT) to new year 2015\n- publicated at https://github.com/graetz23/xmlcc for swarm development\n\n20141231 version 0.95 :\n- added getTag() to class Node for receiving XML tag recursively as std::string\n- DOM::Controller is extended by\n - erase() for deleting Node*; safe\n - view() for printing Node* to std::cout; skipping '\\n'@end\n - write() for writing an XML DOM tree or any XML structure (Node*)\n - removed static doTag() while ported to Node*\n- DOM::Tokenizer is extended by\n - buildDomTreeOfTagList() for building DOM tree by given list of strings\n - convert XML tag to DOM Node* object recursively\n- DOM::Core is extened by\n - parseFile2TagList() for reading file to list of strings; XML tags\n - parseFile2DomTree() for rading file to DOM tree; passing back a Root* (Node*)\n - buildDomTreeOfTagList() for building DOM tree for any XML structure; by Node*\n- cleaned code due to old exmaples\n\n20141230 version 0.94 :\n- added namespace CFG::\n - added class Config\n  - generates xmlcc's configuration file using DOM::\n  - writes xmlcc's configuration file by DOM::\n  - reads xmlcc' configuration with DOM::Parser( DOM::Handler )\n- hacked on DOM::Controller\n - better functionality of support methods\n - renamend methods for better functionality and in better code style\n  - isComment( Node* ), isElement(), isValue, and so on ..\n  - genArrOfComments( ) and genListOfComments( ) instead get..( )\n  - added static method doTag( Node* ) for converting to XML tag\n- added TEST::Controller for unit tests of DOM::Controller\n - added tests the mainly used methods class\n - added tests for XML tag generation by static doTag() method\n - not 100 % test verfication provided yet\n- added generation of a DOM:: example for html web page to main()\n - view it by std::cout \u003c\u003c xml \u003c\u003c ..\n - write it by std::fstream \u003c\u003c xml \u003c\u003c ..\n - added 'using namespace XMLCC;'\n- XMLCC is keeping namespaces DOM::, SAX::, and CFG::; (SYS:: \u0026 TEST::)\n\n20141229 version 0.93 :\n- ported complete namespace OBJ:: to namespace DOM::\n - deleted namespace OBJ::\n - cleaned all code due to XMLCC::DOM:: ..\n\n20141229 version 0.92 :\n- namespace OBJ::\n - (!) renamed class OBJ::Object* to class OBJ::Node*\n  - typedef available as XMLCC::Node* \u0026 XMLCC::NodeList*\n - moving methods from DOM::Grabber to OBJ::Controller\n  - deleted DOM:Grabber\n - moved Types:: to OBJ::Types::\n\n20141229 version 0.91 :\n- changed XMLCC's license from 'Apache 2.0' to 'The MIT License (MIT)'\n- minor bug fixes\n- namespace OBJ::\n - moved DOM::Viewer to OBJ::Viewer\n - moved DOM::Writer to OBJ::Writer\n\n20141228 version 0.90 :\n- xmlcc's package name 'Elsie Fox'\n- rehacked XML parser\n - SYS::XmlParser keeping algorithm for filtering XML tags\n  - SYS::XmlHandler called by parser in known SAX implemenation\n   - startDoc( ) method is called directly before reading first character\n   - startTag( Str tag ) method is called by \u003c \u003e, \u003c /\u003e, \u003c? ?\u003e or \u003c!-- --\u003e, etc.\n   - characters( Str txt ) method is called by each value or text \u003e .. \u003c\n   - endTag( Str tag ) method is called by each ending tag \u003c/ \u003e\n   - endDoc( ) method is called directly after reading last character\n  - TEST::XmlParser Test; still to be implemented\n - DOM::Parser using SYS::XmlParser by implementing an own handler in static way\n  - DOM::Handler inherits from SYS::XmlHandler and fills smart array XmlList*\n  - rehacked Exception handling\n - SAX::Parser using SYS::XmlParser\n  - SAX::Handler is available for own handler implementations by inheritance\n   - startDoc( ), startTag( tag ), characters( txt ), endTag( tag ), endDoc( )\n  - Sax::HandlerExample is printing out an XML file by using one indentation\n  - rehacked Exception handling\n- renamed XMLCC::String to XMLCC::Str\n - renamed class SYS::StringTool to SYS::StrTool\n - renamed class TEST::StringTool to TEST::StrTool\n- moved XMLCC::Builder to OBJ::Builder\n- start implementing unit tests for SYS::StrTool\n- added memory optimization of smart list in DOM::Parser\n- cleaned main.cpp, due to keeping commented code\n\n20141223 version 0.80 :\n- xmlcc's package name 'Melany Zax'\n - from WWW: http://www.namegenerator.biz/female-name-generator.php\n- added simple unit test case framework\n - added unit tests for SYS::List\u003cT\u003e; smart array template class\n - added unit tests for SYS::XmlTool; formats malformed XML tags\n - added unit tests for SYS::StrTool; easy going with std::string and char*\n - added unit tests for DEV::Tokenizer; mapping XML tags 2 XMLCC::Objects\n - added class for XMLCC::; moved methods from main() to unit test case class\n- rehacked the DOM (Document Object Model) parser\n - bug fixes for some malformed MXL tags\n - added more flexibility by separating functionality to different classes\n- extended Makefile by a make refresh for cleaning, an update, and a build\n- switched IDE for developing\n - kicked all Microsoft Visual Studio projects files; not necessary anymore\n - added eclipse CDT projects files and cleaned subversion control files\n - still updating Makefile for having a build and quick check; on raspbian e.g.\n - removed the SAX parser while it has to be rehacked; no need for at moment\n\n20141122 version 0.73 :\n\nStarted a new dev parser with xml file 2 tag list 2 tokenizer 2 objects strategy\n- added XMLCC::DEV::Cleaner class\n - added remove and add spikes methods\n - added check4Tag, ..4Starting, ..4Ending, ..4StanAlone returning boolean\n - added check4Header, ..4Comment, and ..4CDATA returning boolean\n\n20130904 version 0.72 :\n\nCompiled, fixed, and tested on rapberian GNU/Linux using gxx 4.6.3.\n\n20130209 version 0.71 :\n- Updated copyright information towards 2012 and removed old email address\n- Added constructors to XMLCC::OBJ::Element to support an infinite number of\n  objects (XMLCC::OBJ::Attribute, ..::Comment, ..::CDATA, and ..::Element)\n  at generating an XML structure but one has to give the number of Elements\n  yet if there are more than 20 objects passed.\n- Added methods for each section to be parsed but actually not in a very elegant\n  way.\n\n20100812 version 0.70 :\n- New package release called: Vivian Creighton\n- Added overloaded constructors to XMLCC::OBJ::Element for directly building\n  XML structure with elements, Attributes and Comments; see:\n  http://www.hookedonlinq.com/LINQtoXML5MinuteOverview.ashx\n  - Easy generation of XML and HTML files using object constructors directly\n  - Added support for std::cout \u003c\u003c object \u003c\u003c std::flush; and support for\n    std::fstream file; ...   file \u003c\u003c object \u003c\u003c std::flush; by overloading\n    std::ostream operator \u003c\u003c ( std::ostream\u0026, .. ) operator\n  - Rehacked examples in main method\n  - Removed class XMLCC::DOM::Dumper while is became obsolete\n  - Rehacked classes XMLCC::DOM::Writer and XMLCC::DOM::Viewer; actually they\n    are obsolete too\n- Added support for \u003c!DOCTYPE .. \u003e for generating and parsing HTML in\n  XMLCC::DEV::Parser but parsing is still in development\n- Added support fot \u003c![CDATA[ .. ]]\u003e for generating and parsing RSS in\n  XMLCC::DEV::Parser but parsing is still in development\n\n\n20100808 version 0.67 :\n- Implemented whole new logic based on more booleans within XMLCC::DEV::Parser\n  later allowing for XML syntax check and parsing \u003c![CDATA[ .. ]]\u003e sections\n\n20100808 version 0.66 :\n- added header file xmlccDefines.h for common STL includes and common typedefs\n  for XMLCC::\n- Restructed all includes of headers\n- updated internal template List XMLCC::SYS::List\u003cT\u003e for data storage.\n  Therefore, the void store( T ) method renames to void add( t )\n- Renamed storeObejct to addObject( ) for the complete project\n- Renamed tyedef ObjectList to ObjectList\n- Renamed typedef StrList to StrList\n- Added horizontal spacers to all headers\n- Reformatted class XMLCC::DOM::Tokenizer for a clearer source\n- renamed RSS 2.0 file to xmlccFeed.rss\n\n20100727 version 0.65 :\n- Added a second Microsoft Visual Studio 2005 project called 'Example' keeping\n  several examples in a main.cpp\n- Changed main project 'XMLCC' to be compiled as a static .lib file and linked\n  then\n\n20100116 version 0.64 :\n- fixed bug of missing include for g++ compiler\n- added file support to main function\n - binary xmlcc can be called like: xmlcc \u003cfileName.xml\u003e\n - the file fileName.xml is parsed an printed to console out\n - indentation is set to two whitespaces\n - can be used to reformat xml or html files\n - try in dir trunk/XMLCC: ./xmlcc XMLCC.vcproj ; is an XML file too ~8\u003e\n- removed the MSDOS ending tags from Makefile using flip -u \u003cfile\u003e\n- added to SAX parser the parsing from a buffer (char* or std::string)\n\n20090926 version 0.63 :\n- changed License to the Apache License, Version 2.0\n\n20090926 version 0.62 :\n- renamed XMLCC::DOM::Sorter to XMLCC::DOM::Grabber\n- added class XMLCC::SYS::Str and\n- added MS Visual Studio 2005 Project files including AnkhSVN Config for plugin\n- ported Project to http://code.google.com/p/xmlcc\n- added subversion repository at code.google.com\n- try: svn checkout http://xmlcc.googlecode.com/svn/trunk/ xmlcc-read-only\n- added remarks for new development users ...\n\n20090515 version 0.61 :\n- added a new class named DOM::BUFFER which reads from a std::string and\n  returns a XMLCC::Object* of type XMLCC::ROOT* keeping all XML syntax\n- renamed class DOM::Converter 2 DOM::Tokenizer in case of better naming\n- added 80 sign comment bars for grouping code\n- changed includes in headers due to defines for compiler\n- added comments at DOM:: class\n- added DEV namespace for new developemetns and tryouts\n - added a parser 2 DEV for splitting it to functions\n- reprogramed at DEV namespace the parser with common member vars and functions\n  for files and buffers\n- added get functions to DOM::Grabber for getting values and attributes from\n  an object\n- extended example in main\n- bug fix for empty attributes in class Builder\n- added directory XMLCC keeping xmlccMalformed.xml and newFeed.rss for execution\n  test binary xmlcc\n\n20090106 version 0.60 :\n- added two sub name spaces DOM and SAX to group new functionality\n - renamed several files -\u003e *Dom* \u0026 *Sax*\n - renamed several classes -\u003e DOM:: \u0026 SAX::\n- added name space OBJ for the multidim composite pattern\n - renamed several files -\u003e *Obj*\n - renamed several classes -\u003e OBJ::\n- added name space ERR for the exceptions, errors, and failures\n - renamed several files -\u003e *Err*\n - renamed several classes -\u003e SYS::\n- added name space SYS for stringTools ans template List\u003cT\u003e\n - renamed several files *Sys*\n - renamed several classes -\u003e SYS::\n- changed internal structure of class Object*\n - renamed functions get( % ) -\u003e getObject( % )\n - renamed functions store( % ) -\u003e storeObject( % )\n - renamed functions size( % ) -\u003e getNoOfObjects( % )\n - renamed functions arr( % ) -\u003e getObjects( % )\n - changed to protected member for the list of Object* objects\n\n20081207 version 0.52 :\n- created subversion repository for XMLCC MSVS 2005 project\n- added test and by the way an example for class XMLCC::List\u003cT\u003e\n- fixed bug in XMLCC::List\u003cT\u003e::ins( ) function\n- added some 80 symbol spacers for better overview in VIM editor\n- replaced copyright symbol with (C)\n\n20081115 version 0.51 :\n- fixed bugs\n  - tags could now store a single comment only\n  - exception handling bug is removed for correct line numbers\n- added class Dumper as base class for Viewer and Writer\n - migrated double functinonality 2 one single class Dumper\n - Viewer and Writer are changed to single output functions\n - Now dumping data can be easily extended\n- reprocessed some comments\n- changed example for catching exceptions\n\n20081114 version 0.50 :\n- new package release called Jenell Oz\n- added an event based parser and an handler as an API\n - API like the one known from XML SAX Java Parser\n - create an own handler to handle the parsed data at each event\n - added an example for a console out to shown functionality of the parser\n - the event based API Parser is leightweigted and not a memory eater so\n- extended main function for an API Parser example\n- added and fixed some comments\n- fixed minor bugs\n\n20081109 version 0.43 :\n- the parser is extended towards exceptions\n - added try catch block to handle exceptions\n - parser hands back line number and char position if xml syntax is corrupted\n - parser is getting intelligent; tells about wrong tags and where\n- renamed some internal function of class Converter and extended exceptions\n- extended malformed xml file xmlccMalformed.xml\n\n20081103 version 0.42 :\n- the parser (class Parser) is extended\n - can read mixed tags now\n - also allows any char in a value of an attribute, eg. \u003c or \u003e\n - more logic is put to the parser, to check while parsing\n- class Writer and class Viewer are reimplemented\n - main recursive functions are reimplemented and simpilied\n - supports a simpler logic and a fast drive on huge xml files\n- the \u003c\u003c operator is overload as a friend for class Object\n - can push an object or a pointer to an object to std::cout\n - internal function for getTag() is renamed to neutral getStr()\n- internal extra class Error::Exception is migrated to XMLCC::Exception\n- minror bugs were found and fixed\n - more logic to the convert functions of attributes with values\n - meta object functions are not necessary yet and were removed\n\n20081102 version 0.41 :\n- the parser (Parser) and the Converter are revised\n - Parser class received more logic for parsing elements\n   keeping attributes like: att=\"\u003e\u003cval\u003e\u003c\" and att=\"\"\n - Converter checks with more logic for faults\n- changed xmlccMalformed.xml for a harder example\n- fixed minor bugs; comments\n- TODO: tags in \"multi-elements\" keep their position; see xmlccMalformed.xml\n\n20081029 version 0.40 :\n- fixed minor bugs\n- the parser is revised\n - parser can read break lines\n - parser is not fixed to syntax\n  - can read \u003c   !  -    -   -- ! \u003e\n  - can read \u003c   ?     ? \u003e\n  - can read \u003c tag   \u003e    \u003c  / tag \u003e\n - attributes whitespaces are now saved\n - values whitespaces are now saved\n- aded search functions\n - search for no of tags in XML structure\n - search for no of values in XML structure\n - search for no of tags with value in XML structure\n - search for objects keeping a tag\n - search for objects keeping a value\n - search for objects keeping a tag with a value\n\n20081028 version 0.31 :\n- fixed minor bugs\n- the parser is revised\n - some bugs are fixed\n - functions are sorted\n - comments are added\n - added some more exceptions\n- strongly malformed XML files can be read\n\n20081026 version 0.30 :\n- a prototype of the parser is ready\n - supports placed comments\n - supports standalone tags\n - tabulators are supported\n - ATTENTION: white spaces in arguments are not supported yet\n - ATTENTION: white spaces in values are not supported yet\n- fixed minor bugs\n- added more comments\n\n20081025 version 0.20 :\n- changes values from being Strs 2 XMLCC::Objects\n - added multiple values\n - allows for writing mixed values/tags later\n- reimplemented new versions or Writer and Viewer\n- fixed minor bugs\n\n20081024 version 0.12 :\n- XMLCC::Root represents a file now\n- fixed minor bugs\n\n20081022 verison 0.11 :\n- added file open and closing\n- some bugs were fixed\n\n20081020 version 0.10 :\n- created software project XMLCC\n- added basic object model; root, header, element, comment, ..\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgraetz23%2Fxmlcc","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgraetz23%2Fxmlcc","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgraetz23%2Fxmlcc/lists"}