{"id":15990377,"url":"https://github.com/johelegp/rapidxml","last_synced_at":"2025-07-19T09:37:21.612Z","repository":{"id":137134881,"uuid":"72397953","full_name":"JohelEGP/RapidXml","owner":"JohelEGP","description":"Project to improve and modernize the RapidXml 1.13 public API.","archived":false,"fork":false,"pushed_at":"2017-03-20T04:20:12.000Z","size":4815,"stargazers_count":1,"open_issues_count":0,"forks_count":2,"subscribers_count":5,"default_branch":"master","last_synced_at":"2025-03-01T20:30:32.924Z","etag":null,"topics":["xml","xml-parser"],"latest_commit_sha":null,"homepage":null,"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/JohelEGP.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"license.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2016-10-31T03:52:08.000Z","updated_at":"2019-09-27T08:54:44.000Z","dependencies_parsed_at":null,"dependency_job_id":"aa64d03c-3f3c-41d4-b7d7-ea3d6cfa2279","html_url":"https://github.com/JohelEGP/RapidXml","commit_stats":{"total_commits":53,"total_committers":2,"mean_commits":26.5,"dds":0.05660377358490565,"last_synced_commit":"8451d3ecc39c159e0fa8d5df04b1c3bea0786001"},"previous_names":[],"tags_count":6,"template":false,"template_full_name":null,"purl":"pkg:github/JohelEGP/RapidXml","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JohelEGP%2FRapidXml","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JohelEGP%2FRapidXml/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JohelEGP%2FRapidXml/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JohelEGP%2FRapidXml/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/JohelEGP","download_url":"https://codeload.github.com/JohelEGP/RapidXml/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JohelEGP%2FRapidXml/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":265910223,"owners_count":23847520,"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","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":["xml","xml-parser"],"created_at":"2024-10-08T05:21:14.621Z","updated_at":"2025-07-19T09:37:21.572Z","avatar_url":"https://github.com/JohelEGP.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# jegp/RapidXml\n\nProject to improve and modernize the [RapidXml 1.13](http://rapidxml.sourceforge.net/) public API.\n\nThis project uses [Semantic Versioning 2.0.0](http://semver.org/).\n\n## Getting started\n\n### Dependencies\n\n* [GSL](https://github.com/Microsoft/GSL)\n* [jegp 3.0.0](https://github.com/johelegp/jegp)\n\n### Installation\n\nRapidXml is header-only. It is enough to make the headers visible to your building process to start using the library.\n\nWe support [CMake](https://cmake.org/). Just execute these commands from the root of the project:\n\n```\ncmake -E make_directory build\ncmake -E chdir build cmake ..\n```\n\nAnd optionally install the library (commands for linux):\n\n```\ncd build\nmake install\n```\n\n## Features\n\n* [String view/ref support](#string-viewref-support)\n* [Policy type for case sensitivity](#policy-type-for-case-sensitivity)\n* Convenience `xml_document::parse` overload for constant XML strings.\n* [Ranges of node children and attributes](#ranges-of-node-children-and-attributes)\n\n### String view/ref support\n\nWherever a RapidXml 1.13 member function has `const Ch*` and `std::size_t` parameter pairs representing string spans, there is an overload taking `std::basic_string_view\u003cCh\u003e` parameters, which passes to the overloaded member function the `data()` and `size()` values of the string views through the string spans' components they represent. [ Note: An empty string view can have non-`nullptr` `data()`. Some overloaded member functions interpret the non-`nullptr` `const Ch*` value of a string span with `0` `std::size_t` value as a [`gsl::czstring`](http://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#SS-views) and attempt to calculate its size. To match this meaning of emptiness, when a string view is empty, `nullptr` is passed instead of its `data()` to those overloaded member functions. -- end note ]\n\nThe `memory_pool::allocate_string` overload returns a `jegp::Basic_string_ref\u003cCh\u003e`.\n\nFor `xml_base`, the `name_ref` and `value_ref` member functions return a `jegp::Basic_string_ref\u003cCh\u003e` constructed with the string span components returned from the `name` and `name_size`, and `value` and `value_size` member functions respectively.\n\n### Policy type for case sensitivity\n\nTo request or not case sensitive comparisons, the `bool case_sensitive` parameters of the overloads with string span support have been replaced with a dedicated type, `case_sensitivity`.\n\n```C++\nnamespace rapidxml {\n\nstruct case_sensitivity { /*unspecified*/ };\n\n// Requests that the comparisons are case sensitive (default).\nconstexpr case_sensitivity case_sensitive {/*unspecified*/};\n\n// Requests that the comparisons are not case sensitive.\nconstexpr case_sensitivity non_case_sensitive {/*unspecified*/};\n\n} // rapidxml namespace\n```\n\nThese constants can also be used in place of the `bool case_sensitive` parameters.\n\n### Ranges of node children and attributes\n\n```C++\n// In header \u003crapidxml_iterators.hpp\u003e\n\n//...\n\ntemplate\u003cclass Ch\u003e\n/*unspecified*/ node_range(const xml_node\u003cCh\u003e *parent,\n                           std::basic_string_view\u003cCh\u003e name = {}) noexcept;\n\ntemplate\u003cclass Ch\u003e\n/*unspecified*/ attribute_range(const xml_node\u003cCh\u003e *node,\n                                std::basic_string_view\u003cCh\u003e name = {}) noexcept;\n```\n\nThe functions return a range of pointers to the children/attributes of the node, optionally filtered by `name`.\n\nThe ranges offers minimal range-based for loop support.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjohelegp%2Frapidxml","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjohelegp%2Frapidxml","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjohelegp%2Frapidxml/lists"}