Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/tensorflow/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Linux平台上使用C动态生成XML文件?_C_Xml_Xsd_Xml Parsing - Fatal编程技术网

如何在Linux平台上使用C动态生成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是文本-一个选项是只发送所需的文档。

我只想在给定位置创建一个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("&amp;"); break;
      case '<': printf("&lt;"); break;
      case '>': printf("&gt;"); break;
      case '"': printf("&quot;"); break;
      case '\'': printf("&apos;"); 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>