如何在Linux平台上使用C动态生成XML文件?
我只想在给定位置创建一个XML文件(我有该文件的XML模式),并在其中写入一个结构 比如说如何在Linux平台上使用C动态生成XML文件?,c,xml,xsd,xml-parsing,C,Xml,Xsd,Xml Parsing,我只想在给定位置创建一个XML文件(我有该文件的XML模式),并在其中写入一个结构 比如说 struct my_data { int no; char *input ; char *output; char * descritpiton; char *time; }; “Expat”和“Xerces”是两个选项,但是我不想要任何解析的东西(因为这些lib基本上是xml解析器)。因此,仅创建一个xml文件,我认为这些选项不是一种有效的方法 有什么帮助吗 XML是文本-一个选项是只发送所需的文档。
struct my_data
{
int no;
char *input ;
char *output;
char * descritpiton;
char *time;
};
“Expat”和“Xerces”是两个选项,但是我不想要任何解析的东西(因为这些lib基本上是xml解析器)。因此,仅创建一个xml文件,我认为这些选项不是一种有效的方法
有什么帮助吗 XML是文本-一个选项是只发送所需的文档。存在一些问题(必须确保转义实体等),但这是一种零开销的方法。XML库通常可以同时进行解析和生成
如果您的XML文件足够简单,您可以直接使用fprintf等工具输出它们。但是您可能需要一个例程来适当地转义XML字符(
XML只是ASCII。但是您需要对字符串进行编码-这是一个简单的实现过程。有关所需的编码,请参阅
此代码将执行以下操作:
char *s = "some string that needs encoed &<>"'";
for (; *s; ++s)
{
switch (*s)
{
case '&': printf("&"); break;
case '<': printf("<"); break;
case '>': printf(">"); break;
case '"': printf("""); break;
case '\'': printf("'"); break;
default: putc(*s, stdout); break;
}
}
char*s=“需要编码的字符串&“”;
对于(;*s;++s)
{
开关(*s)
{
大小写“&”:printf(“&;”);break;
案例“”:printf(“”);break;
大小写“”:printf(“”);break;
案例'\'':printf(“&apos;”);break;
默认值:putc(*s,标准输出);中断;
}
}
在这种情况下,我通常使用mxml库,但这里您只想生成xml文件,而不想解析它,然后您可以直接以这种方式生成xml文件
#include<stdio.h>
struct my_data
{
int number;
char string[10];
};
void createdata(FILE *fb,struct my_data testData)
{
fprintf ( fb,"<Data>\n");
fprintf ( fb,"<number> %d </number>\n",testData.number);
fprintf ( fb,"<string> %s </string>\n",testData.string);
fprintf ( fb,"</Data>\n");
}
int main()
{
FILE *fb=fopen("test.xml","w");
struct my_data testData = {32,"Mr.32"};
fprintf ( fb,"<?xml version=\"1.0\" encoding=\"utf-8\"?>\n");
createdata(fb,testData);
return 0;
}
#包括
结构我的_数据
{
整数;
字符串[10];
};
void createdata(文件*fb,结构我的数据testData)
{
fprintf(fb,“\n”);
fprintf(fb,“%d\n”,testData.number);
fprintf(fb,“%s\n”,testData.string);
fprintf(fb,“\n”);
}
int main()
{
文件*fb=fopen(“test.xml”,“w”);
struct my_data testData={32,“Mr.32”};
fprintf(fb,“\n”);
createdata(fb,testData);
返回0;
}
这只是帮助您思考的ruff代码…这段代码将生成以下xml文件
−
32
32先生
<Data>
<number> 32 </number>
<string> Mr.32 </string>
</Data>