最近做嵌入式項目,需要生成XML狀態報文,C++的XML的解析器就不能用了。然后使用xmllib2,功能挺多,也很穩定,就是太大了,不利于移植到ARM,而且有很多的功能用不上,編譯部署麻煩。一日,看了一本書上好像這么說: 一個工具解決的問題比它引入的問題還多,就去掉它,重新從零開始。感覺說得的有道理,我還不如自己寫一個。Forge....
花了一下午,共200行C代碼完成了一個XML文檔生成器,測試了一下效率相當高,也很穩定,感覺好極了。那位大哥如果能做的更精巧,不妨提攜一下小弟,不吝指教。
工程名稱:MiniXML
工程下載:
http://m.shnenglu.com/Files/dyj057/minixml.zip
在XP+VS2003中編譯通過,你也可以在Linux,Unix上使用。
使用例子:
????????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>