国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

pugixml 丟失空格的解決方法

2019-11-09 20:33:58
字體:
供稿:網(wǎng)友

pugixml 是一個(gè)非常好用的c++ xml解析庫,速度快,占用內(nèi)存小,支持xpath,且開源,可以說是c++ xml解析庫的首選.

但近日發(fā)現(xiàn),使用pugixml解析xml.然后再將其保存成xml文件的時(shí)候,會(huì)造成空格丟失的情況.經(jīng)過一番跟蹤調(diào)試,終于發(fā)現(xiàn)問題所在,遂在此記錄.

在pugixml讀入buffer進(jìn)行解析的時(shí)候,在pugixml.cpp的第3406行(pugixml1.7) 有這么一行代碼

PUGI__SKipWS(); // Eat whitespace if no genuine PCDATA here. 

該行代碼是一個(gè)宏,對(duì)應(yīng)的是

#define PUGI__SKIPWS()              { while (PUGI__IS_CHARTYPE(*s, ct_space)) ++s; }

其中 PUGI__IS_CHARTYPE 是一個(gè)檢查是不是該字節(jié)是不是對(duì)應(yīng)的類型,

ct_space是chartype_t的一個(gè)類型,chartype_t的全部內(nèi)容如下

enum chartype_t{ct_parse_pcdata = 1,// /0, &, /r, <ct_parse_attr = 2,// /0, &, /r, ', "ct_parse_attr_ws = 4,// /0, &, /r, ', ", /n, tabct_space = 8, // /r, /n, space, tabct_parse_cdata = 16,// /0, ], >, /rct_parse_comment = 32,// /0, -, >, /rct_symbol = 64,// Any symbol > 127, a-z, A-Z, 0-9, _, :, -, .ct_start_symbol = 128// Any symbol > 127, a-z, A-Z, _, :};

從這里我們就可以看到了,如果是/r, /n, space, tab的話 pugixml是會(huì)自動(dòng)跳過的

全文使用PUGI__SKIPWS的有六個(gè)地方,經(jīng)過本人的測試,沒有深究其中的代碼,注釋上文所說的地方就可以在不影響功能(不影響我使用到的功能,可能有影響到的我沒碰到)的情況下保留正文中的空格.


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 庆安县| 星座| 扎兰屯市| 遵化市| 河曲县| 环江| 张掖市| 阜平县| 富锦市| 涡阳县| 桐城市| 额济纳旗| 江城| 堆龙德庆县| 牙克石市| 碌曲县| 彝良县| 红安县| 河北省| 广水市| 康乐县| 苍梧县| 冷水江市| 报价| 改则县| 称多县| 河源市| 缙云县| 东台市| 利辛县| 手游| 旺苍县| 临沭县| 万荣县| 临夏市| 南投市| 阿合奇县| 巴彦淖尔市| 綦江县| 寿光市| 浦北县|