读取JSON字符串,转为XML文件(二)

来源:互联网 发布:新华书店淘宝旗舰店 编辑:程序博客网 时间:2024/05/29 11:44

      在做WEB后端开发的时候,会用到XML来传输数据。客户端发送请求(XML)到服务器,服务器又反馈信息(XML)到客户端。在这个过程中,会涉及到读取JSON字符串打包成XML,以及解析XML成JSON字符串给前端使用。现在贴出解析JSON字符串成为XML文档的代码。

   test.c

   

#include<stdio.h>#include<stdlib.h>#include "json.h"#include <libxml/xmlmemory.h>#include <libxml/parser.h>#include <libxml/tree.h>//添加节点到XMLvoid AddNodeToXml(xmlDocPtr doc,xmlNodePtr item, char *key,char *val){xmlNodePtr ponet = xmlNewTextChild(item,NULL,(xmlChar*)key,(xmlChar*) val);}//关闭文档void CloseXml(xmlDocPtr doc){xmlSaveFormatFileEnc("ho.xml",doc,"UTF-8",1);xmlFreeDoc(doc);}void test(){int i = 0;int iLength = 0;json_object* my_array = json_object_new_array();json_object* my_obj1 = json_object_new_object();json_object* my_obj2 = json_object_new_object();json_object* my_obj3 = json_object_new_object();json_object_object_add(my_obj1,"item1",json_object_new_int(1));json_object_object_add(my_obj1,"item2", json_object_new_int(2));json_object_object_add(my_obj1, "item3",json_object_new_int(3));json_object_object_add(my_obj1,"item4", json_object_new_int(6));json_object_object_add(my_obj2,"item5", json_object_new_int(1));json_object_object_add(my_obj2,"item6", json_object_new_int(2));json_object_object_add(my_obj2, "item7",json_object_new_int(3));json_object_object_add(my_obj2,"item8", json_object_new_int(6));json_object_object_add(my_obj3,"item9", json_object_new_int(7));json_object_object_add(my_obj3,"item10", json_object_new_int(8));json_object_object_add(my_obj3, "item11",json_object_new_int(9));json_object_object_add(my_obj3,"item12", json_object_new_int(10));json_object_array_add(my_array,my_obj1);json_object_array_add(my_array,my_obj2);json_object_array_add(my_array,my_obj3);printf("%s\n", json_object_to_json_string(my_array));//从数组中读取JSON对象iLength = json_object_array_length(my_array);//分配对象用来保存数组中的对象json_object* obj[iLength];for(i = 0;i < iLength;i++){obj[i] = json_object_new_object();}// 建立XML文件xmlDocPtr doc = xmlNewDoc(BAD_CAST"1.0");xmlNodePtr pRoot = xmlNewNode(NULL,BAD_CAST"data");xmlDocSetRootElement(doc,pRoot);//遍历出数组中到对象for(i = 0;i < iLength;i++){xmlNodePtr item = xmlNewTextChild(pRoot,NULL,BAD_CAST"item",NULL);obj[i] = json_object_array_get_idx(my_array,i);printf("obj[%d] = %s\n",i,json_object_to_json_string(obj[i]));//添加节点到XML文件中json_object_object_foreach(obj[i],key,val){AddNodeToXml(doc,item,key,json_object_to_json_string(val));}}CloseXml(doc);}int main(){test();}

运行结果:

<?xml version="1.0" encoding="UTF-8"?><data>  <item>    <item1>1</item1>    <item2>2</item2>    <item3>3</item3>    <item4>6</item4>  </item>  <item>    <item5>1</item5>    <item6>2</item6>    <item7>3</item7>    <item8>6</item8>  </item>  <item>    <item91>71</item91>    <item101>81</item101>    <item111>91</item111>    <item121>101</item121>  </item></data>


0 0
原创粉丝点击