TinyXML is a simple, small, C++ XML parser that can be integrating into other programs. It is the standard XML parser for ROS. TinyXML is installed as a system dependency, meaning it is not a ROS package and requires some custom CMake code to compile against.
Contents
Using the system install version with Catkin
TinyXML does not install a FindTinyXML.cmake file on its own, instead a custom one must be provided. To save ROS developers time and centralize custom *.cmake modules commonly used in ROS, a new catkin package named [cmake_modules](https://github.com/ros/cmake_modules) has been created to aid in including these cmake files. The following steps will instruct you in how to easily use TinyXML with a custom CMake file in ROS.
#includes
To use the system dependency of tinyxml, add to your code:
#include <tinyxml.h>
CMakeLists.txt
The custom cmake file is included by depending on cmake_modules. Make sure you have cmake_modules and TinyXML including in the following places in your CMakeLists.txt:
  # Load catkin and all dependencies required for this package                                                                                              
  find_package(catkin REQUIRED
    cmake_modules
    ...
  )
  find_package(TinyXML REQUIRED)
  # Declare a catkin package                                                                                                                                
  catkin_package(
    LIBRARIES
      ...
    INCLUDE_DIRS
      include
    DEPENDS
      TinyXML
  )
  # Build                                                                                                                                                   
  include_directories(include ${catkin_INCLUDE_DIRS} ${TinyXML_INCLUDE_DIRS})Then for every library/executable that uses TinyXML, be sure to link libraries:
  target_link_libraries(${PROJECT_NAME} ${catkin_LIBRARIES} ${TinyXML_LIBRARIES})
package.xml dependencies
Add to your package.xml:
<build_depend>tinyxml</build_depend> <build_depend>cmake_modules</build_depend> <run_depend>tinyxml</run_depend>
External Documentation
Please see the tinyxml website for documentation on using tinyxml.
