成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

怎么在C++中對(duì)XML與JSON格式進(jìn)行轉(zhuǎn)換-創(chuàng)新互聯(lián)

怎么在C++中對(duì)XML與JSON格式進(jìn)行轉(zhuǎn)換?很多新手對(duì)此不是很清楚,為了幫助大家解決這個(gè)難題,下面小編將為大家詳細(xì)講解,有這方面需求的人可以來(lái)學(xué)習(xí)下,希望你能有所收獲。

在網(wǎng)站設(shè)計(jì)制作、成都做網(wǎng)站中從網(wǎng)站色彩、結(jié)構(gòu)布局、欄目設(shè)置、關(guān)鍵詞群組等細(xì)微處著手,突出企業(yè)的產(chǎn)品/服務(wù)/品牌,幫助企業(yè)鎖定精準(zhǔn)用戶,提高在線咨詢和轉(zhuǎn)化,使成都網(wǎng)站營(yíng)銷成為有效果、有回報(bào)的無(wú)錫營(yíng)銷推廣。創(chuàng)新互聯(lián)公司專業(yè)成都網(wǎng)站建設(shè)10年了,客戶滿意度97.8%,歡迎成都創(chuàng)新互聯(lián)客戶聯(lián)系。
<xml>
  <appid>appid-value111111</appid>
  <mch_id>mch_id-value22222</mch_id>
  <nonce_str>nonce_str-value3333333</nonce_str>
  <transaction_id>transaction_id-value44444444</transaction_id>
  <sign>sign-value5555555555</sign>
</xml>

上面的報(bào)文是在三方支付里面常見的報(bào)文,這次我們來(lái)實(shí)現(xiàn)對(duì)這段報(bào)文的Json格式的自由轉(zhuǎn)換。

#include <string>
#include <iostream>
#include "tinyxml2.h"
#include "nlohmann/json.hpp"

using json = nlohmann::json;
using namespace tinyxml2;
using namespace std;

string xml2json(string &src)
{
  XMLDocument doc;
  doc.Parse( src.c_str() );
  
  json root;
  XMLElement* rootElement = doc.RootElement();
  XMLElement* child = rootElement->FirstChildElement();
  while(child) {
    const char* title = child->Name() ;
    const char* value = child->GetText();
    child = child->NextSiblingElement();
    root[title]=value ;
  }
  return root.dump() ;
}

string json2xml(string& src)
{
  XMLDocument xmlDoc;
  XMLNode * pRoot = xmlDoc.NewElement("xml");
  xmlDoc.InsertFirstChild(pRoot);
  auto j3 = json::parse(src.c_str());
  for (json::iterator it = j3.begin(); it != j3.end(); ++it) {
    string key = it.key();
    string value = it.value() ;
    XMLElement * pElement = xmlDoc.NewElement(key.c_str()) ;
    pElement->SetText(value.c_str()) ;
    pRoot->InsertEndChild(pElement);
  }
  XMLPrinter printer;
  pRoot->Accept( &printer );
  return printer.CStr();
}

int main()
{
  string src = "<xml>\
          <appid>appid-value111111</appid>\
          <mch_id>mch_id-value22222</mch_id>\
          <nonce_str>nonce_str-value3333333</nonce_str>\
          <transaction_id>transaction_id-value44444444</transaction_id>\
          <sign>sign-value5555555555</sign>\
        </xml>" ;
  string json = xml2json(src) ;
  string xml = json2xml(json) ;

  cout << json ;
  cout << endl ;
  cout << xml ;
}

這次我們使用tinyxml2 和nlohmann json 做轉(zhuǎn)換,需要將兩者的頭文件和源代碼文件下載,并在編譯中include。

nolhmann json 需要C++ 11 的支持,gcc版本需要在4.7以上。

可以使用下面命令編譯:

g++ -std=c++11 xmljson.cpp tinyxml2.cpp -I./

./a.out
{"appid":"appid-value111111","mch_id":"mch_id-value22222","nonce_str":"nonce_str-value3333333","sign":"sign-value5555555555","transaction_id":"transaction_id-value44444444"}
<xml>
  <appid>appid-value111111</appid>
  <mch_id>mch_id-value22222</mch_id>
  <nonce_str>nonce_str-value3333333</nonce_str>
  <sign>sign-value5555555555</sign>
  <transaction_id>transaction_id-value44444444</transaction_id>
</xml>

C++常用函數(shù) XML JSON格式轉(zhuǎn)換https://www.cppentry.com/benc...

開發(fā)資料https://www.cppentry.com

知識(shí)點(diǎn)擴(kuò)展:C++常用的系統(tǒng)函數(shù)

數(shù)學(xué)<math.h>:

1 三角函數(shù)

double sin (double);
double cos (double);
double tan (double);

2 反三角函數(shù)

double asin (double); 結(jié)果介于[-PI/2, PI/2]
double acos (double); 結(jié)果介于[0, PI]
double atan (double); 反正切(主值), 結(jié)果介于[-PI/2, PI/2]
double atan2 (double, double); 反正切(整圓值), 結(jié)果介于[-PI/2, PI/2]

3 雙曲三角函數(shù)

double sinh (double);
double cosh (double);
double tanh (double);

4 指數(shù)與對(duì)數(shù)

double exp (double x); e的x次冪
double pow (double x, double y); x的y次冪
double sqrt (double);
double log (double x); 以e為底的對(duì)數(shù),即ln x
double log10 (double x);log10(x) 以10為底。

沒有以2為底的函數(shù)但是可以用換底公式解 決:log2(N)=log10(N)/log10(2)

5 取整

double ceil (double); 不小于x的最小整數(shù)
double floor (double); 不大于x的大整數(shù)

6 絕對(duì)值

int abs(int);整型
long labs(long);長(zhǎng)整型
double fabs (double);浮點(diǎn)型

7 標(biāo)準(zhǔn)化浮點(diǎn)數(shù)

double frexp (double f, int p); 標(biāo)準(zhǔn)化浮點(diǎn)數(shù), f = x 2^p, 已知f求x, p ( x介于[0.5, 1] )
double ldexp (double x, int p); 與frexp相反, 已知x, p求f

8 取整與取余

double modf (double, double*); 將參數(shù)的整數(shù)部分通過(guò)指針回傳, 返回小數(shù)部分
double fmod (double, double); 返回兩參數(shù)相除的余數(shù)

9.平方根

double sqrt(double x);

字符<ctype.h>:

int isalpha(int c);c是否為字母
int isdigit(int c);c是否為數(shù)字
int tolower(int c);將c轉(zhuǎn)換為小寫字母
int toupper(int c);將c轉(zhuǎn)換為大寫字母

字符串<string.h>:

char strcpy(char sl,char s2);將字符串s2復(fù)制給s1,即覆蓋
unsigned strlen(char sr);求字符串str長(zhǎng)度

內(nèi)存操作<memory.h>:

void memcpy(void d,void *s,int c);將s指向的內(nèi)存區(qū)域的c個(gè)字節(jié)復(fù)制到d指向的區(qū)域

類型轉(zhuǎn)換<stdlib.h>:

int atoi(char s);將字符串轉(zhuǎn)化為整數(shù)
char itoa(int v,char *s,int x);將整數(shù)v按x進(jìn)制轉(zhuǎn)成字符串s

時(shí)間<time.h>:

time_t time(time_t *timer);返回1970/1/1零點(diǎn)到目前的秒數(shù)

其他<stdlib.h>:

srand(unsigned seed);設(shè)置隨機(jī)數(shù)的種子
int rand();產(chǎn)生0-RAND_MAX的隨機(jī)數(shù)
exit(int);終止正在執(zhí)行的程序

keep going

看完上述內(nèi)容是否對(duì)您有幫助呢?如果還想對(duì)相關(guān)知識(shí)有進(jìn)一步的了解或閱讀更多相關(guān)文章,請(qǐng)關(guān)注創(chuàng)新互聯(lián)網(wǎng)站建設(shè)公司行業(yè)資訊頻道,感謝您對(duì)創(chuàng)新互聯(lián)建站的支持。

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)建站jinyejixie.com,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、建站服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。

標(biāo)題名稱:怎么在C++中對(duì)XML與JSON格式進(jìn)行轉(zhuǎn)換-創(chuàng)新互聯(lián)
URL分享:http://jinyejixie.com/article30/djshpo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站維護(hù)、全網(wǎng)營(yíng)銷推廣、品牌網(wǎng)站設(shè)計(jì)、網(wǎng)站導(dǎo)航、小程序開發(fā)、動(dòng)態(tài)網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都app開發(fā)公司
永泰县| 林州市| 白朗县| 普宁市| 五寨县| 微山县| 府谷县| 安达市| 鄂伦春自治旗| 永春县| 张掖市| 柞水县| 石嘴山市| 互助| 张掖市| 江西省| 辽阳市| 民丰县| 克拉玛依市| 铜鼓县| 黔西| 平乐县| 安达市| 晋宁县| 襄垣县| 玛沁县| 柳林县| 开江县| 隆林| 金湖县| 延安市| 教育| 县级市| 双鸭山市| 梁平县| 比如县| 寿阳县| 永丰县| 珠海市| 驻马店市| 安宁市|