- 论坛徽章:
- 0
|
请问给位大虾:“sco 下的c有没有解析xml的工具”
如果想偷懒,那么可用用orient类库(我写的 ),别向我要源码
[code]
orient类库中提供了对xml文件进行读取、编辑的类TXml。
xml文件由多个节点(TXmlNode)构成。
TXmlNode提供了节点名称、取值、属性的操作。同时 TXml也是从TXmlNode继承下来的。
下面提供了2个例子。
#include <xml.h>;
void xml_create_demo()
{
TXml xml;
TXmlNode * node,* sonnode;
//创建注释节点
node=xml.Create_Comment("this is xml demo file" ;
//作为第一层结点
xml.Add_Node(node);
//创建注释节点
node=xml.Create_Comment("base info of hangzhou city" ;
//作为第一层结点
xml.Add_Node(node);
//下面创建主节点 hangzhou
//创建一个组节点
node=xml.Create_Node(Xml_Node_Type_Group);
//设置名称
node->;Set_Name("hangzhou" ;
//设置属性
node->;Add_Property("zipcode","310000" ;
node->;Add_Property("state","zhejiang" ;
node->;Add_Property("country","china" ;
//作为第一层结点
xml.Add_Node(node);
//hangzhou节点下挂上 street(街道) 节点
//创建一个组节点
sonnode=xml.Create_Node(Xml_Node_Type_Group);
//设置名称
sonnode->;Set_Name("street" ;
//作为第二层结点
node->;Add_Node(sonnode);
//hangzhou节点下挂上 area(行政区) 节点
//创建一个组节点
sonnode=xml.Create_Group("area" ;
//作为第二层结点
node->;Add_Node(sonnode);
//列举街道信息
node=xml.Create_Node(Xml_Node_Type_Element);
node->;Set_Name("wenyi" ;
node->;Set_Value("文一街,人口8万,有财经学院" ;
xml.Add_Node("hangzhou,street",node);
node=xml.Create_Element("wener","文二街,人口12万,有商学院");
xml.Add_Node("hangzhou,street",node);
//复合用法
(xml.Get_Node("hangzhou,street"))->;Add_Node(xml.Create_Element("dongsan","东三弄,浙大附近"));
//列举行政区信息
node=xml.Create_Node(Xml_Node_Type_Element);
node->;Set_Name("xihu");
node->;Set_Value("西湖区,人口58万,是最大的行政区");
xml.Add_Node("hangzhou,area",node);
node=xml.Create_Element("xiachen","下城区,人口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();
};
|
|