2012-01-04 52 views
2

我只是想在给定位置创建一个XML文件(我有该文件的XML模式),并向其中写入一个结构。如何在Linux平台上使用C动态生成XML文件?

例如

struct my_data 
{ 
int no; 
char *input ; 
char *output; 
char * descritpiton; 
char *time; 
}; 

“外籍人士”和“Xerces的”两个选项,但我不希望任何解析的东西(由于这些库基本都是XML解析器)。所以,要创建一个xml文件,我不认为,这些选项是一种有效的方法。

任何帮助?

回答

2

也大多是我使用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; 
} 

这只是围脖代码,以帮助你去思考...此代码使初级讲座xml文件

-

<Data> 
<number> 32 </number> 
<string> Mr.32 </string> 
</Data> 
3

XML是文本 - 一个选择就是发射所需要的文档。有问题(你必须确保逃离实体等),但它的零开销方法。

2

XML库通常都可以做分析和生成。

如果你的XML文件是很简单的,你可以将其输出直接与如fprintf。但是,那么你可能需要一个例程来适当地转义XML字符(<&lt;等等)。

我仍然会用一些轻XML库建议。

2

XML只是ASCII。然而,你需要对字符串进行编码 - 这是一个简单的过程来实现。请参阅http://en.wikipedia.org/wiki/List_of_XML_and_HTML_character_entity_references了解所需的编码。

此代码将做到这一点:

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; 
    } 
}