-
Notifications
You must be signed in to change notification settings - Fork 0
wuxinyi/xmlparser
Folders and files
| Name | Name | Last commit message | Last commit date | |
|---|---|---|---|---|
Repository files navigation
将xml配置文件转化为内存数据结构 兼顾配置的灵活性和性能,同时将在后续提供加载到LUA ENV的接口
使用方法:
1:创建一个配置文件(xml/template.xml)
2:创建一个模板文件(xml/template/template.xml)
3: 运行tools/xmltool.py,将在src/先生成template.h,此文件基于tinyxml2加载xml配置到内存(后续将加载到LuaState)
XMLfile:
<xmlparser version="1.0.0">
<test1 t1v = '1' t2v = "123" t3v="223"/>
<test1 t1v = '2' t2v = "223" t3v="223"/>
<test1 t1v = '3' t2v = "323" t3v="323"/>
<test1 t1v = '4' t2v = "423" t3v="423"/>
<test2 id="1" name="1111">
<testn id="1" name="wu"/>
<testn id="2" name="xin"/>
<testn id="3" name="yi"/>
</test2>
<test2 id="2" name="2222"/>
<test2 id="3" name="3333"/>
<test3 num1="100" num2="10000" num3="hello world">
<test3n id="1"/>
<test3n id="2"/>
<test3n id="3"/>
</test3>
<test2 id="4" name="44444"/>
</xmlparser>
How to use in C++:
if (!xml::xmlparser.load())
{
std::cout << "加载失败" << std::endl;
return 1;
}
std::cout << "------------------------- C++ ------------------------------------" << std::endl;
for (auto &v : xml::xmlparser.test1)
{
std::cout << v.second.t1v << " " << v.second.t2v << " " << v.second.t3v << std::endl;
}
for (auto &v : xml::xmlparser.test2)
{
std::cout << v.id << " " << v.name << std::endl;
std::cout << "------" << std::endl;
for(xml::XMLPARSER::TEST2::TESTN_ConstIt it = v.testn.cbegin(); it != v.testn.cend(); ++it)
{
std::cout << it->second.id << " " << it->second.name << std::endl << std::endl;
}
}
std::cout << xml::xmlparser.test3.num1 << " " << xml::xmlparser.test3.num2 << " " << xml::xmlparser.test3.num3 << std::endl;
OUT PUT:
------------------------- C++ ------------------------------------
1 123 223
2 223 223
3 323 323
4 423 423
1 1111
------
1 wu
2 xin
3 yi
2 2222
------
3 3333
------
4 44444
------
100 10000 hello world
How to use in Lua:
print(xml.xmlparser.version)
print(xml.xmlparser.test1[1].t1v)
print(xml.xmlparser.test1[1].t2v)
print(xml.xmlparser.test1[1].t3v)
print(xml.xmlparser.test2[1].testn[1].id)
print(xml.xmlparser.test2[1].testn[1].name)
print(xml.xmlparser.test3.num1)
print(xml.xmlparser.test3.num2)
print(xml.xmlparser.test3.num3)
OUT PUT:
1.0.0
1
123
223
1
wu
100
10000
hello world
About
No description, website, or topics provided.
Resources
Stars
Watchers
Forks
Releases
No releases published
Packages 0
No packages published