BIMHome v1.0.0
BIMHome接口文档说明
XMLTools.h
浏览该文件的文档.
1/************************************************************************
2* @file XMLTools.h
3*
4* @brief XML工具类
5*
6* @details XML工具类
7*
8* @author wukx
9*
10* @version v1.0
11*
12* @date 2016.9.30
13*
14* @license 北京华科软科技有限公司
15*
16*************************************************************************/
17
18#ifndef BIMHOMEBASE_XMLTOOLS_H
19#define BIMHOMEBASE_XMLTOOLS_H
20
21#include <memory>
22#include <iostream>
23#include <xercesc/util/TransService.hpp>
24
25#include <Base/Exception.h>
26
27
28XERCES_CPP_NAMESPACE_BEGIN
29class DOMNode;
30class DOMElement;
31class DOMDocument;
32XERCES_CPP_NAMESPACE_END
33
34
39 class BaseExport XMLTools
40{
41public:
48 static std::string toStdString(const XMLCh* const toTranscode);
49
56 static std::basic_string<XMLCh> toXMLString(const char* const fromTranscode);
57
62 static void initialize();
63
68 static void terminate();
69
70private:
71 static std::unique_ptr<XERCES_CPP_NAMESPACE::XMLTranscoder> transcoder;
72};
73
78class StrX
79{
80public:
86 StrX(const XMLCh* const toTranscode);
87
92 ~StrX();
93
99 const char* c_str() const;
100
101private:
103};
104
112inline std::ostream& operator<<(std::ostream& target, const StrX& toDump)
113{
114 target << toDump.c_str();
115 return target;
116}
117
118inline StrX::StrX(const XMLCh* const toTranscode)
119{
120 // Call the private transcoding method
121 fLocalForm = XERCES_CPP_NAMESPACE_QUALIFIER XMLString::transcode(toTranscode);
122}
123
125{
126 XERCES_CPP_NAMESPACE_QUALIFIER XMLString::release(&fLocalForm);
127}
128
129inline const char* StrX::c_str() const
130{
131 return fLocalForm;
132}
133
139{
140public:
146 StrXUTF8(const XMLCh* const toTranscode);
147
153 const char* c_str() const;
154
155public:
156 std::string str;
157};
158
166inline std::ostream& operator<<(std::ostream& target, const StrXUTF8& toDump)
167{
168 target << toDump.c_str();
169 return target;
170}
171
172inline StrXUTF8::StrXUTF8(const XMLCh* const toTranscode)
173{
174 str = XMLTools::toStdString(toTranscode);
175}
176
177inline const char* StrXUTF8::c_str() const
178{
179 return str.c_str();
180}
181
186class XStr
187{
188public:
194 XStr(const char* const toTranscode);
195
200 ~XStr();
201
207 const XMLCh* unicodeForm() const;
208
209private:
211};
212
213inline XStr::XStr(const char* const toTranscode)
214{
215 fUnicodeForm = XERCES_CPP_NAMESPACE_QUALIFIER XMLString::transcode(toTranscode);
216}
217
219{
220 XERCES_CPP_NAMESPACE_QUALIFIER XMLString::release(&fUnicodeForm);
221}
222
223inline const XMLCh* XStr::unicodeForm() const
224{
225 return fUnicodeForm;
226}
227
233{
234public:
240 XUTF8Str(const char* const fromTranscode);
241
246 ~XUTF8Str();
247
253 const XMLCh* unicodeForm() const;
254
255private:
256 std::basic_string<XMLCh> str;
257};
258
259inline XUTF8Str::XUTF8Str(const char* const fromTranscode)
260{
261 str = XMLTools::toXMLString(fromTranscode);
262}
263
265{
266}
267
268inline const XMLCh* XUTF8Str::unicodeForm() const
269{
270 return str.c_str();
271}
272
273#endif // BIMHOMEBASE_XMLTOOLS_H
std::ostream & operator<<(std::ostream &target, const StrX &toDump)
重载输出流运算符,用于输出 StrX 对象
Definition XMLTools.h:112
const char * c_str() const
获取本地编码字符串
Definition XMLTools.h:129
~StrX()
析构函数
Definition XMLTools.h:124
StrX(const XMLCh *const toTranscode)
构造函数
Definition XMLTools.h:118
char * fLocalForm
本地编码的字符串
Definition XMLTools.h:102
StrX 类,用于管理 XMLCh 字符串的生命周期
Definition XMLTools.h:79
const char * c_str() const
获取 UTF-8 编码的字符串
Definition XMLTools.h:177
std::string str
存储 UTF-8 编码的字符串
Definition XMLTools.h:156
StrXUTF8(const XMLCh *const toTranscode)
构造函数
Definition XMLTools.h:172
StrXUTF8 类,用于管理 XMLCh 字符串到 UTF-8 字符串的转换
Definition XMLTools.h:139
static void terminate()
终止 Xerces-C++ 库
static std::string toStdString(const XMLCh *const toTranscode)
将 XMLCh 字符串转换为 std::string
static std::unique_ptr< XERCES_CPP_NAMESPACE::XMLTranscoder > transcoder
XML 转码器
Definition XMLTools.h:71
static void initialize()
初始化 Xerces-C++ 库
static std::basic_string< XMLCh > toXMLString(const char *const fromTranscode)
将 std::string 转换为 XMLCh 字符串
XMLTools 类,提供 XML 相关的工具函数
Definition XMLTools.h:40
~XStr()
析构函数
Definition XMLTools.h:218
XMLCh * fUnicodeForm
存储转换后的 XMLCh 字符串
Definition XMLTools.h:210
XStr(const char *const toTranscode)
构造函数
Definition XMLTools.h:213
const XMLCh * unicodeForm() const
获取 XMLCh 字符串
Definition XMLTools.h:223
XStr 类,用于管理 UTF-8 字符串到 XMLCh 字符串的转换
Definition XMLTools.h:187
XUTF8Str(const char *const fromTranscode)
构造函数
Definition XMLTools.h:259
std::basic_string< XMLCh > str
存储转换后的 XMLCh 字符串
Definition XMLTools.h:256
~XUTF8Str()
析构函数
Definition XMLTools.h:264
const XMLCh * unicodeForm() const
获取 XMLCh 字符串
Definition XMLTools.h:268
XUTF8Str 类,用于管理 UTF-8 字符串到 XMLCh 字符串的转换
Definition XMLTools.h:233