c xml(如何在C 实现自定义XML序列化问题,怎么解决)
本文目录
- 如何在C 实现自定义XML序列化问题,怎么解决
- 用C语言读取xml文件,怎么实现
- 如何使用c解析xml
- c语言如何解析xml并将所有内容存入数组
- C语言xml解析
- 怎么用C语言写一个简单的XML文件
- c语言如何调用xml的接口函数
- 怎么用c语言解析xml文件
- c++ C软件编程中使用XML的主要作用是干什么
- 如何用C语言实现对xml文件的加密
如何在C 实现自定义XML序列化问题,怎么解决
对于字符串,你有一些选择;xml可以简单地用 XmlSerializer ( 或者 DataContractSerializer,但它提供了对xml的更少控制) 或者 JSON (JSON.net, 等来完成。XmlSerializer的典型类看起来很简单:public class Apple {public string Variety {get;set;}public decimal Weight {get;set;}//etc}( 注意我也希望上面的Json.NET 也能工作)上面的类还应该在数据绑定场景中工作良好,这是由于。你将序列化:Apple obj = new Apple { Variety =“Cox“, Weight = 12.1M};XmlSerializer ser = new XmlSerializer(typeof(Apple));StringWriter sw = new StringWriter();ser.Serialize(sw, obj);string xml = sw.ToString();StringReader sr = new StringReader(xml);Apple obj2 = (Apple)ser.Deserialize(sr);但是你可以自定义 xml:public decimal Weight {get;set;}}
用C语言读取xml文件,怎么实现
xml文件和txt文件相同,使用普通的文本操作函数即可读取。
1、C语言标准库提供了一系列文件操作函数。文件操作函数一般以f+单词的形式来命名(f是file的简写),其声明位于stdio.h头文件当中。例如:fopen、fclose函数用于文件打开与关闭;fscanf、fgets函数用于文件读取;fprintf、fputs函数用于文件写入;ftell、fseek函数用于文件操作位置的获取与设置。2、例程:
#include《stdio.h》int a;char b,c;int main(){ FILE * fp1 = fopen(“input.xml“, “r“);//打开xml格式输入文件 FILE * fp2 = fopen(“output.txt“, “w“);//打开输出文件 if (fp1==NULL || fp2==NULL) {//若打开文件失败则退出 puts(“不能打开文件!“); rturn 0; } fscanf(fp1,“%d“,&a);//从输入文件读取一个整数 b=fgetc(fp1);//从输入文件读取一个字符 fgets(c,100,fp1);//从输入文件读取一行字符串 printf(“%ld“,ftell(fp1));//输出fp1指针当前位置相对于文件首的偏移字节数 fputs(c,fp2);//向输出文件写入一行字符串 fputc(b,fp2);//向输出文件写入一个字符 fprintf(fp2,“%d“,a);//向输出文件写入一个整数 fclose(fp1);//关闭输入文件 fclose(fp2);//关闭输出文件,相当于保存 return 0;}如何使用c解析xml
xml文件内容《?xml version=“1.0“ encoding=“UTF-8“ ?》 - 《aicomoa_response》- 《country_list》- 《country》《id》7《/id》 《pid》0《/pid》 《continent_id》1《/continent_id》 《guohao》93《/guohao》 《cntitle》阿富汗《/cntitle》 《entitle》Afghanistan《/entitle》 《hztitle》阿富汗《/hztitle》 《jptitle》アフガニスタン《/jptitle》 《kotitle》??????《/kotitle》 《jp_pinyin》ア《/jp_pinyin》 《pinyin》AFuHan《/pinyin》 《sid》0《/sid》 《jibie》1《/jibie》 《/country》- 《country》《id》8《/id》 《pid》0《/pid》 《continent_id》2《/continent_id》 《guohao》355《/guohao》 《cntitle》阿尔巴尼亚《/cntitle》 《entitle》Albania《/entitle》 《hztitle》阿尔巴尼亚《/hztitle》 《jptitle》アルバニア《/jptitle》 《kotitle /》 《jp_pinyin》ア《/jp_pinyin》 《pinyin》AErBaNiYa《/pinyin》 《sid》0《/sid》 《jibie》1《/jibie》 《/country》《/country_list》《/aicomoa_response》运行结果Info=Press any key to continue代码#include 《stdio.h》#include 《string.h》main(){ int i=0; FILE *fp; char szFileBuff = {0}, szBuff; char id = {0}, pid = {0}, continent_id = {0}, guohao = {0}, cntitle= {0},entitle= {0},hztitle = {0},jptitle = {0}, kotitle = {0},jp_pinyin = {0}, pinyin = {0},sid = {0},jibie = {0}; char *lFirst, *lEnd; fp = fopen(“country.txt“,“r“); if (fp==NULL) { printf(“read XML file error!\n“); } while(fgets(szFileBuff, 1023, fp)) { if ((lFirst = strstr(szFileBuff, “《id》“)) != NULL) { lEnd = strstr(lFirst + 1, “《/id》“); memcpy(id, lFirst + 4, lEnd - lFirst - 4); } if ((lFirst = strstr(szFileBuff, “《pid》“)) != NULL) { lEnd = strstr(lFirst + 1, “《/pid》“); memcpy(pid, lFirst + 5, lEnd - lFirst - 5); } if ((lFirst = strstr(szFileBuff, “《continent_id》“)) != NULL) { lEnd = strstr(lFirst + 1, “《/continent_id》“); memcpy(continent_id, lFirst + 14, lEnd - lFirst - 14); } if ((lFirst = strstr(szFileBuff, “《guohao》“)) != NULL) { lEnd = strstr(lFirst + 1, “《/guohao》“); memcpy(guohao, lFirst + 8, lEnd - lFirst - 8); } if ((lFirst = strstr(szFileBuff, “《cntitle》“)) != NULL) { lEnd = strstr(lFirst + 1, “《/cntitle》“); memcpy(cntitle, lFirst + 9, lEnd - lFirst - 9); } if ((lFirst = strstr(szFileBuff, “《entitle》“)) != NULL) { lEnd = strstr(lFirst + 1, “《/entitle》“); memcpy(entitle, lFirst + 9, lEnd - lFirst - 9); } if ((lFirst = strstr(szFileBuff, “《hztitle》“)) != NULL) { lEnd = strstr(lFirst + 1, “《/hztitle》“); memcpy(hztitle, lFirst + 9, lEnd - lFirst - 9); } if ((lFirst = strstr(szFileBuff, “《jptitle》“)) != NULL) { lEnd = strstr(lFirst + 1, “《/jptitle》“); memcpy(jptitle, lFirst + 9, lEnd - lFirst - 9); }
c语言如何解析xml并将所有内容存入数组
/* 前段时间恰好做过类似的东西,代码可以给你参考下。 * Xml配置见最后 */typedef struct SrcFileFmt{ int ColID; char ColCode; /* 字段英文名称 */ char ColName; /* 字段中文名称*/ char ColType; /* 字段类型(包含长度) */ char ColComment; /* 字段描述 */}SrcFileFmt;int main(int argc, char **argv){ SrcFileFmt SrcFileFmt; int iNum = -1; if ( 2 》 argc ) { printf(“Usage: %s SrcXmlFile\n“, argv); return -1; } iNum = parseSourceCfg(SrcCfgFile, SrcFileFmt); if (iNum == -1) { return -1; } return 0;}/* 调用此函数后,xml文件的内容会被存储到结构体数组SrcFileFmt srcfilefmt中 * 此函数依赖于libxml2-2.9.2.tar.xz */int parseSourceCfg(char *FileName, SrcFileFmt srcfilefmt){ /* 解析源文件xml,FileName 为源xml文件名 */ xmlDocPtr doc; xmlNodePtr cur, root; char sFileName = {’\0’}; int cnt = 0; if (FileName == NULL) { return -1; } sprintf(sFileName, “%s.xml“, FileName); doc = xmlParseFile(sFileName); if (doc == NULL) { return -1; } root = xmlDocGetRootElement(doc); if (root == NULL) { xmlFreeDoc(doc); return(-1); } if (xmlStrcmp(root-》name, (const xmlChar *) “SrcRoot“)) { xmlFreeDoc(doc); return -1; } cur = root-》xmlChildrenNode; while (cur != NULL) { if ((!xmlStrcmp(cur-》name, (const xmlChar *)“Column“))) { xmlChar *key; xmlNodePtr cur_sub = cur; cur_sub = cur_sub-》xmlChildrenNode; while (cur_sub != NULL) { if ((!xmlStrcmp(cur_sub-》name, (const xmlChar *)“ColID“))) { key = xmlNodeListGetString(doc, cur_sub-》xmlChildrenNode, 1); killblank((char*)key); srcfilefmt.ColComment, (char*)key); xmlFree(key); } cur_sub = cur_sub-》next; } cnt++; } cur = cur-》next; } xmlFreeDoc(doc); return cnt;}《SrcRoot》 《Column》 《ColID》1《/ColID》 《ColCode》kmh《/ColCode》 《ColName》字段1《/ColName》 《ColType》VARCHAR(11)《/ColType》 《/Column》 《Column》 《ColID》2《/ColID》 《ColCode》dfkmh《/ColCode》 《ColName》字段2《/ColName》 《ColType》VARCHAR(11)《/ColType》 《/Column》 《Column》 《ColID》3《/ColID》 《ColCode》hbh《/ColCode》 《ColName》字段3《/ColName》 《ColType》INTEGER(10)《/ColType》 《/Column》《/SrcRoot》
C语言xml解析
把所有的数据当做一个字符串收到数据后先strstr(buffer,“《?xml version=\“1.0\“ encoding=\“UTF-8\“?》“);如果返回的是NULL则表示没有这段 退出buffer是你收到的数据起始地址
怎么用C语言写一个简单的XML文件
用VC吧,下面有一个例子,你参照下:
void CreateXml(){ CoInitialize(NULL); // 创建文档 MSXML2::IXMLDOMDocument2Ptr pXMLDoc = NULL; //创建DOMDocument对象 HRESULT hr = pXMLDoc.CreateInstance(__uuidof(MSXML2::DOMDocument)); if (!SUCCEEDED(hr)) { return; } // Create the Processing Instruction MSXML2::IXMLDOMProcessingInstructionPtr pXMLProc = NULL; pXMLProc = pXMLDoc-》createProcessingInstruction(“xml“, “version=’1.0’ encoding=’UTF-8’“); _variant_t vNullVal; vNullVal.vt = VT_NULL; pXMLDoc-》insertBefore(pXMLProc, vNullVal); // 创建根结点 _variant_t varNodeType((short)MSXML2::NODE_ELEMENT); MSXML2::IXMLDOMNodePtr pXMLNodeRoot= NULL; pXMLNodeRoot = pXMLDoc-》createNode(varNodeType, _T(“Cases“), _T(““)); // 添加根结点 pXMLDoc-》appendChild(pXMLNodeRoot); // 创建并添加下级结点 MSXML2::IXMLDOMNodePtr pXMLNodeNode= NULL; pXMLNodeNode = pXMLNodeRoot-》appendChild(pXMLDoc-》createElement(_T(“Case“))); // 创建下级元素结点 MSXML2::IXMLDOMElementPtr pXMLEle = NULL; pXMLEle = pXMLDoc-》createElement(_T(“CopyFile“)); // 创建并设置下级结点属性 MSXML2::IXMLDOMAttributePtr pXMLAttr = NULL; pXMLAttr = pXMLDoc-》createAttribute(_T(“src“)); pXMLAttr-》nodeTypedValue = “C:\\test.txt“; pXMLEle-》attributes-》setNamedItem(pXMLAttr); pXMLAttr = pXMLDoc-》createAttribute(_T(“dest“)); pXMLAttr-》nodeTypedValue = “D:\\Test.txt“; pXMLEle-》attributes-》setNamedItem(pXMLAttr); // 添加元素结点 pXMLNodeNode-》appendChild( pXMLEle); MSXML2::IXMLDOMElementPtr pXMLEle1 = NULL; pXMLEle1 = pXMLDoc-》createElement(_T(“DelFile“)); pXMLEle1-》appendChild(pXMLDoc-》createTextNode(“C:\\test.txt“)); // 添加元素结点 pXMLNodeNode-》appendChild( pXMLEle1); // 保存文档 pXMLDoc-》save(_T(“d:\\Test.xml“));} 效果如下:《?xml version=“1.0“ encoding=“UTF-8“ ?》 《Cases》 《Case》 《CopyFile src=“C:\test.txt“ dest=“D:\Test.txt“ /》 《DelFile》C:\test.txt《/DelFile》 《/Case》《/Cases》为了能够让MFC认识MSXML2,我们需要引入相应的dll,代码如下;#import “msxml4.dll“
c语言如何调用xml的接口函数
/***************《?xml version=“1.0“ encoding=“utf-8“?》《Cases》 《case》 《No》001《/No》 《CopyFile src=“C:\test.txt“ dest=“D:\test.txt“》《/CopyFile》 《/case》 《case》 《No》002《/No》 《DelFile》C:\test.txt《/DelFile》 《/case》《/Cases》*******************/// 我们用MFC来读取上述xml,代码如下: void ReadXml(CString strXmlPath){ MSXML2::IXMLDOMDocumentPtr pDoc; ::CoInitialize(NULL); HRESULT hr = pDoc.CreateInstance(__uuidof(MSXML2::DOMDocument40)); if (!SUCCEEDED(hr)) { MessageBox(_T(“创建DOMDocument对象失败。\n请检查运行环境“), _T(“错误“), MB_ICONERROR); return; } // 读取xml pDoc-》put_async(VARIANT_FALSE); VARIANT_BOOL bhr = pDoc-》load((_variant_t)strXmlPath); if (bhr != VARIANT_TRUE) { MessageBox(_T(“无法正确读取xml文件“), _T(“错误“), MB_ICONERROR); return; } // 根节点取得 MSXML2::IXMLDOMElementPtr root = pDoc-》documentElement; // 取得根节点的名字 _variant_t strRootName = root-》nodeName; _bstr_t wstrRootName(strRootName.bstrVal); MSXML2::IXMLDOMNodeListPtr nodeList = root-》GetchildNodes();//cases // 解析cases的子节点 ReadCases(nodeList);} void ReadCases(MSXML2::IXMLDOMNodeListPtr nodeList){ int ilength = nodeList-》Getlength(); for (int nodeCount = 0; nodeCount 《 ilength; nodeCount++) { MSXML2::IXMLDOMNodePtr nodePtr = nodeList-》nextNode(); _variant_t strNodeName = nodePtr-》GetnodeName(); _variant_t strNodeValue = nodePtr-》GetnodeValue(); // 读取case节点下的子节点 ReadCase(nodePtr-》GetchildNodes()); }}void ReadCase(MSXML2::IXMLDOMNodeListPtr nodeList){ CString strLogInfo; strLogInfo.Empty(); CString strNo; // case编号 CString strSrcFile; // 源文件 CString strDestFile; // 目标文件 for (int nodeCount = 0; nodeCount 《 nodeList-》Getlength(); nodeCount++) { MSXML2::IXMLDOMNodePtr nodePtr = nodeList-》nextNode(); _variant_t strCaseNodeName = nodePtr-》GetnodeName(); _variant_t strCaseNodeValue = nodePtr-》Gettext(); BSTR bStrTemp = strCaseNodeName.bstrVal; CString strTemp = CString(bStrTemp); SysFreeString(bStrTemp); CString strNodeName = strTemp; // 节点的值,如何取得? if (0 == strNodeName.CompareNoCase(_T(“NO“))) { strNo = (BSTR)strCaseNodeValue.pbstrVal; // 取得的值可以打印出来 printf(strNo); } // 节点有属性值,该怎么处理? else if (0 == strNodeName.CompareNoCase(_T(“CopyFile“))) { strSrcFile.Empty(); strDestFile.Empty(); // 取得节点的属性值 MSXML2::IXMLDOMNamedNodeMapPtr pDOMAttrList= nodePtr-》Getattributes(); for (int j = 0; j 《 pDOMAttrList-》Getlength(); j++) { MSXML2::IXMLDOMNodePtr pDOMAttr= pDOMAttrList-》Getitem(j); // 取得源文件路径 if (CompareNoCase((char*)pDOMAttr-》GetnodeName(), _T(“src“))) { strSrcFile = pDOMAttr-》GetnodeTypedValue(); // 取得目标文件路径 } else if (CompareNoCase((char*)pDOMAttr-》GetnodeName(), _T(“dest“))) { strDestFile =pDOMAttr-》GetnodeTypedValue(); } CopyFile(strSrcFile, strDestFile, FALSE); } else if (0 == strNodeName.CompareNoCase(_T(“DelFile“))) { strDestFile.Empty(); strDestFile = CString((BSTR)strCaseNodeValue.pbstrVal); DeleteFile(strDestFile); } } } // 为了能够让MFC认识MSXML2,我们需要引入相应的dll,代码如下;#import “msxml4.dll“
怎么用c语言解析xml文件
我上次才给人写过 xml文件内容《?xml version=“1.0“ encoding=“UTF-8“ ?》 - 《aicomoa_response》- 《country_list》- 《country》《id》7《/id》 《pid》0《/pid》 《continent_id》1《/continent_id》 《guohao》93《/guohao》 《cntitle》阿富汗《/cntitle》 《entitle》Afghanistan《/entitle》 《hztitle》阿富汗《/hztitle》 《jptitle》アフガニスタン《/jptitle》 《kotitle》??????《/kotitle》 《jp_pinyin》ア《/jp_pinyin》 《pinyin》AFuHan《/pinyin》 《sid》0《/sid》 《jibie》1《/jibie》 《/country》- 《country》《id》8《/id》 《pid》0《/pid》 《continent_id》2《/continent_id》 《guohao》355《/guohao》 《cntitle》阿尔巴尼亚《/cntitle》 《entitle》Albania《/entitle》 《hztitle》阿尔巴尼亚《/hztitle》 《jptitle》アルバニア《/jptitle》 《kotitle /》 《jp_pinyin》ア《/jp_pinyin》 《pinyin》AErBaNiYa《/pinyin》 《sid》0《/sid》 《jibie》1《/jibie》 《/country》《/country_list》《/aicomoa_response》运行结果Info=\n“,i++, szBuff); } } fclose(fp);} 补充:你这个就说得太笼统了,1 你上传的xml文件具体格式是什么?2 要在网页上显示的具体格式是什么3 你根本不知道怎么做 所以也不知道怎么问我不用关心你的c语言的cgi吧?我才不管是用什么上传的只有你说的嵌入式三个字 给我一点有用信息 就是解析这个xml用插件恐怕是不行只能C语言4 我现在只要求你的xml文件格式和 网页上要显示哪些xml中解析出来的信息只要知道这些 我只需要在我的程序上加上生成html文件就行了
c++ C软件编程中使用XML的主要作用是干什么
类似于数据库吧,把一些常用的、时不时需要修改值的(工程都很大,你总不能为了只改动代码的几个字母而把整个工程重新编译一遍吧),或者一些起约束作用的配置条件放到XML中,可以起到事半功倍的效果
如何用C语言实现对xml文件的加密
把xml就当做一个普通的二进制文件然后随便找一个加密算法按照字节读入xml文件然后按照加密算法进行加密转换,输出到目标文件就可以了简单的 可以用异或方式。
更多文章:

js方法与函数的区别(如何理解 JavaScript 中方法和函数的区别)
2025年2月28日 07:40

vs2005是什么软件(Visual stdio 2005与SQL有什么联系吗)
2025年3月22日 13:00

datedif计算年龄(Excel中怎样根据出生年月计算年龄)
2025年3月6日 03:30

phonegap手机版下载(Phonegap怎么用来做安卓APP)
2025年2月16日 04:00
![translation可数吗(英汉词典里面名词翻译的后面有[C][U]的话到底是说可数还是不可数)](/static/images/nopic/14.jpg)
translation可数吗(英汉词典里面名词翻译的后面有[C][U]的话到底是说可数还是不可数)
2025年4月5日 06:10

windowsphone下载(windows phone手机现在还能下载软件吗,怎么下载)
2025年3月13日 21:30

java生成随机数的方法(请问java中如何生成1000~10000之间的随机数)
2025年3月7日 11:40

如何来配置iis服务器加强安全?证书与iis结合实现web站点的安全性的核心步骤是什么
2025年3月25日 23:50

linuxecho(Linux里面echo $UID命令后等于0作用是什么)
2025年2月21日 16:50

win10激活工具永久激活(win10家庭版系统怎么永久激活呢)
2025年3月25日 17:00

everybody knows i love you(everybody know i love you这首歌的歌词)
2025年3月26日 07:50

auntie和aunt的区别(关于几个表示“阿姨”的英文单词 aunt aunty auntie 三个词有什么区别)
2025年3月5日 03:10

喝牛奶时经常看到“巴氏杀菌”,那么这到底是什么,求科普?巴氏灭菌法对蜂蜜有用吗
2025年2月21日 20:30

超链接去掉下划线(wpsoffice 超链接下划线怎么去掉)
2025年2月19日 21:50