Find a file
Leon Styhre 6c9d4c10fc Squashed 'external/pugixml/' content from commit a196b9b7
git-subtree-dir: external/pugixml
git-subtree-split: a196b9b7e924d33c465c3ab6a4f7654f36c33284
2020-05-15 16:26:24 +02:00
docs Squashed 'external/pugixml/' content from commit a196b9b7 2020-05-15 16:26:24 +02:00
scripts Squashed 'external/pugixml/' content from commit a196b9b7 2020-05-15 16:26:24 +02:00
src Squashed 'external/pugixml/' content from commit a196b9b7 2020-05-15 16:26:24 +02:00
tests Squashed 'external/pugixml/' content from commit a196b9b7 2020-05-15 16:26:24 +02:00
.codecov.yml Squashed 'external/pugixml/' content from commit a196b9b7 2020-05-15 16:26:24 +02:00
.gitattributes Squashed 'external/pugixml/' content from commit a196b9b7 2020-05-15 16:26:24 +02:00
.gitignore Squashed 'external/pugixml/' content from commit a196b9b7 2020-05-15 16:26:24 +02:00
.travis.yml Squashed 'external/pugixml/' content from commit a196b9b7 2020-05-15 16:26:24 +02:00
appveyor.yml Squashed 'external/pugixml/' content from commit a196b9b7 2020-05-15 16:26:24 +02:00
CMakeLists.txt Squashed 'external/pugixml/' content from commit a196b9b7 2020-05-15 16:26:24 +02:00
LICENSE.md Squashed 'external/pugixml/' content from commit a196b9b7 2020-05-15 16:26:24 +02:00
Makefile Squashed 'external/pugixml/' content from commit a196b9b7 2020-05-15 16:26:24 +02:00
README.md Squashed 'external/pugixml/' content from commit a196b9b7 2020-05-15 16:26:24 +02:00
readme.txt Squashed 'external/pugixml/' content from commit a196b9b7 2020-05-15 16:26:24 +02:00

pugixml Build Status Build status codecov.io MIT

pugixml is a C++ XML processing library, which consists of a DOM-like interface with rich traversal/modification capabilities, an extremely fast XML parser which constructs the DOM tree from an XML file/buffer, and an XPath 1.0 implementation for complex data-driven tree queries. Full Unicode support is also available, with Unicode interface variants and conversions between different Unicode encodings (which happen automatically during parsing/saving).

pugixml is used by a lot of projects, both open-source and proprietary, for performance and easy-to-use interface.

Documentation

Documentation for the current release of pugixml is available on-line as two separate documents:

Youre advised to start with the quick-start guide; however, many important library features are either not described in it at all or only mentioned briefly; if you require more information you should read the complete manual.

Example

Here's an example of how code using pugixml looks; it opens an XML file, goes over all Tool nodes and prints tools that have a Timeout attribute greater than 0:

#include "pugixml.hpp"
#include <iostream>

int main()
{
    pugi::xml_document doc;
    pugi::xml_parse_result result = doc.load_file("xgconsole.xml");
    if (!result)
        return -1;
        
    for (pugi::xml_node tool: doc.child("Profile").child("Tools").children("Tool"))
    {
        int timeout = tool.attribute("Timeout").as_int();
        
        if (timeout > 0)
            std::cout << "Tool " << tool.attribute("Filename").value() << " has timeout " << timeout << "\n";
    }
}

And the same example using XPath:

#include "pugixml.hpp"
#include <iostream>

int main()
{
    pugi::xml_document doc;
    pugi::xml_parse_result result = doc.load_file("xgconsole.xml");
    if (!result)
        return -1;
        
    pugi::xpath_node_set tools_with_timeout = doc.select_nodes("/Profile/Tools/Tool[@Timeout > 0]");
    
    for (pugi::xpath_node node: tools_with_timeout)
    {
        pugi::xml_node tool = node.node();
        std::cout << "Tool " << tool.attribute("Filename").value() <<
            " has timeout " << tool.attribute("Timeout").as_int() << "\n";
    }
}

License

This library is available to anybody free of charge, under the terms of MIT License (see LICENSE.md).