- 論壇徽章:
- 0
|
請問給位大蝦:“sco 下的c有沒有解析xml的工具”
如果想偷懶,那么可用用orient類庫(我寫的 ),別向我要源碼
[code]
orient類庫中提供了對xml文件進(jìn)行讀取、編輯的類TXml。
xml文件由多個(gè)節(jié)點(diǎn)(TXmlNode)構(gòu)成。
TXmlNode提供了節(jié)點(diǎn)名稱、取值、屬性的操作。同時(shí) TXml也是從TXmlNode繼承下來的。
下面提供了2個(gè)例子。
#include <xml.h>;
void xml_create_demo()
{
TXml xml;
TXmlNode * node,* sonnode;
//創(chuàng)建注釋節(jié)點(diǎn)
node=xml.Create_Comment("this is xml demo file" ;
//作為第一層結(jié)點(diǎn)
xml.Add_Node(node);
//創(chuàng)建注釋節(jié)點(diǎn)
node=xml.Create_Comment("base info of hangzhou city" ;
//作為第一層結(jié)點(diǎn)
xml.Add_Node(node);
//下面創(chuàng)建主節(jié)點(diǎn) hangzhou
//創(chuàng)建一個(gè)組節(jié)點(diǎn)
node=xml.Create_Node(Xml_Node_Type_Group);
//設(shè)置名稱
node->;Set_Name("hangzhou" ;
//設(shè)置屬性
node->;Add_Property("zipcode","310000" ;
node->;Add_Property("state","zhejiang" ;
node->;Add_Property("country","china" ;
//作為第一層結(jié)點(diǎn)
xml.Add_Node(node);
//hangzhou節(jié)點(diǎn)下掛上 street(街道) 節(jié)點(diǎn)
//創(chuàng)建一個(gè)組節(jié)點(diǎn)
sonnode=xml.Create_Node(Xml_Node_Type_Group);
//設(shè)置名稱
sonnode->;Set_Name("street" ;
//作為第二層結(jié)點(diǎn)
node->;Add_Node(sonnode);
//hangzhou節(jié)點(diǎn)下掛上 area(行政區(qū)) 節(jié)點(diǎn)
//創(chuàng)建一個(gè)組節(jié)點(diǎn)
sonnode=xml.Create_Group("area" ;
//作為第二層結(jié)點(diǎn)
node->;Add_Node(sonnode);
//列舉街道信息
node=xml.Create_Node(Xml_Node_Type_Element);
node->;Set_Name("wenyi" ;
node->;Set_Value("文一街,人口8萬,有財(cái)經(jīng)學(xué)院" ;
xml.Add_Node("hangzhou,street",node);
node=xml.Create_Element("wener","文二街,人口12萬,有商學(xué)院");
xml.Add_Node("hangzhou,street",node);
//復(fù)合用法
(xml.Get_Node("hangzhou,street"))->;Add_Node(xml.Create_Element("dongsan","東三弄,浙大附近"));
//列舉行政區(qū)信息
node=xml.Create_Node(Xml_Node_Type_Element);
node->;Set_Name("xihu");
node->;Set_Value("西湖區(qū),人口58萬,是最大的行政區(qū)");
xml.Add_Node("hangzhou,area",node);
node=xml.Create_Element("xiachen","下城區(qū),人口51萬");
xml.Add_Node("hangzhou,area",node);
xml.SaveToFile("hangzhou.xml");
node=xml.Get_Node("hangzhou,street");
if(node==NULL)
printf("get fail\n");
else
{
node=node->;Get_Node("dongsan");
if(node==NULL)
printf("get fail\n");
else
printf("value is %s\n",node->;mValue);
};
};
void xml_read_demo()
{
TXml xml;
TXmlNode * node;
if(!xml.LoadFromFile("hangzhou.xml"))
{
printf("load xml fail and fail code is :%d fail_node_id: %s\n",
xml.mError_Code,xml.mError_Node_Id);
exit(0);
};
node=xml.Get_Node("hangzhou,street,wener");
if(node==NULL)
printf("cant get node\n");
else
printf("value is %s\n",node->;mValue);
xml.SaveToFile("3.xml");
};
int main()
{
xml_create_demo();
xml_read_demo();
getchar();
};
|
|