迷你型XML文档生成器(ANSI C)

迷你型XML文档生成器(ANSI C)

最近做嵌入式项目,需要生成XML状态报文,C++的XML的解析器就不能用了。然后使用xmllib2,功能挺多,也很稳定,就是太大了,不利于移植到ARM,而且有很多的功能用不上,编译部署麻烦。一日,看了一本书上好像这么说: 一个工具解决的问题比它引入的问题还多,就去掉它,重新从零开始。感觉说得的有道理,我还不如自己写一个。Forge....
花了一下午,共200行C代码完成了一个XML文档生成器,测试了一下效率相当高,也很稳定,感觉好极了。那位大哥如果能做的更精巧,不妨提携一下小弟,不吝指教。
工程名称:MiniXML
工程下载: http://www.cppblog.com/Files/dyj057/minixml.zip

在XP+VS2003中编译通过,你也可以在Linux,Unix上使用。

使用例子:

xmlNodePtr child;
        xmlNodePtr nameNode ;
        xmlDocPtr doc 
=  xmlNewDoc();
        doc
-> root  =  xmlNewNode( " employees " );

        child 
=  xmlAddChild(doc -> root, xmlNewNode( " employee " ));
        xmlAddProp(child,
" age " , " 28 " );
        xmlAddProp(child,
" sexy " , " male " );
        nameNode 
=  xmlAddChild(child, xmlNewNode( " name " ));
        xmlAddText(nameNode, xmlNewText(
" Nicholas C. Zakas " ));

        child 
=  xmlAddChild(doc -> root, xmlNewNode( " employee " ));
        xmlAddProp(child,
" age " , " 22 " );
        xmlAddProp(child,
" sexy " , " male " );
        nameNode 
=  xmlAddChild(child, xmlNewNode( " name " ));
        xmlAddText(nameNode, xmlNewText(
" Jim Smith " ));

        printfXmlDoc(stdout,doc);
        xmlFreeDoc(doc);


生成XML文档如下:
<?xml version="1.0" encoding="utf-8"?>
<employees>
 <employee age="28" sexy="male">
  <name>Nicholas C. Zakas</name>
 </employee>
 <employee age="22" sexy="male">
  <name>Jim Smith</name>
 </employee>
</employees>

Functions

xmlDocPtr   xmlNewDoc ()   xmlDoc struct pointer
void  xmlFreeDoc ( xmlDocPtr doc)   free XML document struct
void  xmlFreeNode ( xmlNodePtr node)   free XML document struct
void  xmlAddText ( xmlNodePtr node, xmlTextNodePtr text)   add a text node to a element
xmlNodePtr   xmlNewNode (const char *name)   create a new element node
xmlTextNodePtr   xmlNewText (const char *text)   create a new text node
xmlNodePtr   xmlAddChild ( xmlNodePtr father, xmlNodePtr child)   add child node to the father node
void  xmlAddProp ( xmlNodePtr node, const char *propName, const char *propValue)   add property to a node
void  printfXmlDoc (FILE *f, xmlDocPtr doc)   print document's XML to a file

 

你可能感兴趣的:(迷你型XML文档生成器(ANSI C))