kodi
XMLUtils.h
1 /*
2  * Copyright (C) 2005-2018 Team Kodi
3  * This file is part of Kodi - https://kodi.tv
4  *
5  * SPDX-License-Identifier: GPL-2.0-or-later
6  * See LICENSES/README.md for more information.
7  */
8 
9 #pragma once
10 
11 #include "utils/XBMCTinyXML.h"
12 
13 #include <stdint.h>
14 #include <string>
15 #include <vector>
16 
17 #include <tinyxml2.h>
18 
19 class CDateTime;
20 
21 class XMLUtils
22 {
23 public:
24  static bool HasChild(const TiXmlNode* pRootNode, const char* strTag);
25  static bool HasChild(const tinyxml2::XMLNode* rootNode, const char* tag);
26 
27  static bool GetHex(const TiXmlNode* pRootNode, const char* strTag, uint32_t& dwHexValue);
28  static bool GetUInt(const TiXmlNode* pRootNode, const char* strTag, uint32_t& dwUIntValue);
29  static bool GetLong(const TiXmlNode* pRootNode, const char* strTag, long& lLongValue);
30  static bool GetFloat(const TiXmlNode* pRootNode, const char* strTag, float& value);
31  static bool GetDouble(const TiXmlNode* pRootNode, const char* strTag, double& value);
32  static bool GetInt(const TiXmlNode* pRootNode, const char* strTag, int& iIntValue);
33  static bool GetBoolean(const TiXmlNode* pRootNode, const char* strTag, bool& bBoolValue);
34 
35  static bool GetHex(const tinyxml2::XMLNode* rootNode, const char* tag, uint32_t& value);
36  static bool GetUInt(const tinyxml2::XMLNode* rootNode, const char* tag, uint32_t& value);
37  static bool GetLong(const tinyxml2::XMLNode* rootNode, const char* tag, long& value);
38  static bool GetFloat(const tinyxml2::XMLNode* rootNode, const char* tag, float& value);
39  static bool GetDouble(const tinyxml2::XMLNode* rootNode, const char* tag, double& value);
40  static bool GetInt(const tinyxml2::XMLNode* rootNode, const char* tag, int& value);
41  static bool GetBoolean(const tinyxml2::XMLNode* rootNode, const char* tag, bool& value);
42 
52  static bool GetString(const TiXmlNode* pRootNode, const char* strTag, std::string& strStringValue);
53  static bool GetString(const tinyxml2::XMLNode* rootNode, const char* tag, std::string& value);
54 
62  static std::string GetString(const TiXmlNode* pRootNode, const char* strTag);
63  static std::string GetString(const tinyxml2::XMLNode* rootNode, const char* tag);
78  static bool GetAdditiveString(const TiXmlNode* rootNode, const char* tag, const std::string& separator, std::string& value, bool clear = false);
79  static bool GetStringArray(const TiXmlNode* rootNode, const char* tag, std::vector<std::string>& arrayValue, bool clear = false, const std::string& separator = "");
80  static bool GetPath(const TiXmlNode* pRootNode, const char* strTag, std::string& strStringValue);
81  static bool GetFloat(const TiXmlNode* pRootNode, const char* strTag, float& value, const float min, const float max);
82  static bool GetUInt(const TiXmlNode* pRootNode, const char* strTag, uint32_t& dwUIntValue, const uint32_t min, const uint32_t max);
83  static bool GetInt(const TiXmlNode* pRootNode, const char* strTag, int& iIntValue, const int min, const int max);
84  static bool GetDate(const TiXmlNode* pRootNode, const char* strTag, CDateTime& date);
85  static bool GetDateTime(const TiXmlNode* pRootNode, const char* strTag, CDateTime& dateTime);
86 
87  static bool GetAdditiveString(const tinyxml2::XMLNode* rootNode,
88  const char* tag,
89  const std::string& separator,
90  std::string& value,
91  bool clear = false);
92  static bool GetStringArray(const tinyxml2::XMLNode* rootNode,
93  const char* tag,
94  std::vector<std::string>& value,
95  bool clear = false,
96  const std::string& separator = "");
97  static bool GetPath(const tinyxml2::XMLNode* rootNode, const char* tag, std::string& value);
98  static bool GetFloat(const tinyxml2::XMLNode* rootNode,
99  const char* tag,
100  float& value,
101  const float min,
102  const float max);
103  static bool GetUInt(const tinyxml2::XMLNode* rootNode,
104  const char* tag,
105  uint32_t& value,
106  const uint32_t min,
107  const uint32_t max);
108  static bool GetInt(
109  const tinyxml2::XMLNode* rootNode, const char* tag, int& value, const int min, const int max);
110  static bool GetDate(const tinyxml2::XMLNode* rootNode, const char* tag, CDateTime& date);
111  static bool GetDateTime(const tinyxml2::XMLNode* rootNode, const char* tag, CDateTime& dateTime);
117  static std::string GetAttribute(const TiXmlElement *element, const char *tag);
118  static std::string GetAttribute(const tinyxml2::XMLElement* element, const char* tag);
119 
120  static TiXmlNode* SetString(TiXmlNode* pRootNode, const char *strTag, const std::string& strValue);
121  static void SetAdditiveString(TiXmlNode* pRootNode, const char *strTag, const std::string& strSeparator, const std::string& strValue);
122  static void SetStringArray(TiXmlNode* pRootNode, const char *strTag, const std::vector<std::string>& arrayValue);
123  static TiXmlNode* SetInt(TiXmlNode* pRootNode, const char *strTag, int value);
124  static TiXmlNode* SetFloat(TiXmlNode* pRootNode, const char *strTag, float value);
125  static TiXmlNode* SetDouble(TiXmlNode* pRootNode, const char* strTag, double value);
126  static void SetBoolean(TiXmlNode* pRootNode, const char *strTag, bool value);
127  static void SetHex(TiXmlNode* pRootNode, const char *strTag, uint32_t value);
128  static void SetPath(TiXmlNode* pRootNode, const char *strTag, const std::string& strValue);
129  static void SetLong(TiXmlNode* pRootNode, const char *strTag, long iValue);
130  static void SetDate(TiXmlNode* pRootNode, const char *strTag, const CDateTime& date);
131  static void SetDateTime(TiXmlNode* pRootNode, const char *strTag, const CDateTime& dateTime);
132 
133  static tinyxml2::XMLNode* SetString(tinyxml2::XMLNode* rootNode,
134  const char* tag,
135  const std::string& value);
136  static void SetAdditiveString(tinyxml2::XMLNode* rootNode,
137  const char* tag,
138  const std::string& separator,
139  const std::string& value);
140  static void SetStringArray(tinyxml2::XMLNode* rootNode,
141  const char* tag,
142  const std::vector<std::string>& value);
143  static tinyxml2::XMLNode* SetInt(tinyxml2::XMLNode* rootNode, const char* tag, int value);
144  static tinyxml2::XMLNode* SetFloat(tinyxml2::XMLNode* rootNode, const char* tag, float value);
145  static tinyxml2::XMLNode* SetDouble(tinyxml2::XMLNode* rootNode, const char* tag, double value);
146  static void SetBoolean(tinyxml2::XMLNode* rootNode, const char* tag, bool value);
147  static void SetHex(tinyxml2::XMLNode* rootNode, const char* tag, uint32_t value);
148  static void SetPath(tinyxml2::XMLNode* rootNode, const char* tag, const std::string& value);
149  static void SetLong(tinyxml2::XMLNode* rootNode, const char* tag, long value);
150  static void SetDate(tinyxml2::XMLNode* rootNode, const char* tag, const CDateTime& date);
151  static void SetDateTime(tinyxml2::XMLNode* rootNode, const char* tag, const CDateTime& dateTime);
152 
153  static const int path_version = 1;
154 };
155 
static bool GetString(const TiXmlNode *pRootNode, const char *strTag, std::string &strStringValue)
Get a string value from the xml tag If the specified tag isn&#39;t found strStringvalue is not modified a...
Definition: XMLUtils.cpp:247
Definition: XMLUtils.h:21
static bool GetStringArray(const TiXmlNode *rootNode, const char *tag, std::vector< std::string > &arrayValue, bool clear=false, const std::string &separator="")
Definition: XMLUtils.cpp:377
static std::string GetAttribute(const TiXmlElement *element, const char *tag)
Fetch a std::string copy of an attribute, if it exists. Cannot distinguish between empty and non-exis...
Definition: XMLUtils.cpp:538
static bool GetAdditiveString(const TiXmlNode *rootNode, const char *tag, const std::string &separator, std::string &value, bool clear=false)
Get multiple tags, concatenating the values together. Transforms <tag>value1</tag> <tag clear="true">...
Definition: XMLUtils.cpp:316
DateTime class, which uses FileTime as it&#39;s base.
Definition: XBDateTime.h:63