XML理解,XML与ini比较
1.ini文件
ini文件就是用来记录一些参数,或者说配置使用的.操作很方便.
但也有缺点,就是ini格式记录的参数在ini文件中的联系是很弱的,参数间的联系需要通过代码来完成,但容易出错.
例如:我要记录一个数组的数据,用ini你可以这样做
[vector]
count=4
V1="a"
V2="b"
V3="c"
V4="d"
V5="e"
你的程序需要这么做:
1.先读取count的值,
2.使用一个循环读取V1--V5的值.
3.把读取到的V1---V5的值填入你自己的数据结构中.
容易出错的地方:
1.如果增加一个V6,count需要跟着修改.(如果遇到很复杂的结构,修改一处而引起其他地方也需要修改的话,很容易犯错误.)
2.Ini中的参数的关系需要代码来完成,如果ini的数据改变了,代码可能要变化很大.
3.如果下面的数据结构在ini中保存怎么做.
structSTTest
{
std::vector<int>m_vectorInt;
std::list<double>m_listDouble;
};
structSTGood
{
STTestm_stTest[10];
};
Ini很难把数据结构的层次关系描述出来,你必须通过代码实现,而且你的解析代码还要跟着ini走,ini一但需要变化,你的代码就要跟着变,当到遇上一些复杂的结构时就更复杂了.(因为我做个这样的笨事情!!!!!!!!!!!!!!!!!!!!!!!).
2.XML
XML的格式就是一个树结构,其标签--属性--值的属性可以很好的描述数据结构,甚至可以把变量名也描述出来,可以序列化一个对象,可以记录传输数据表的记录等等).
记得刚刚接触XML的时候,自己借了一本超市行业的XML的书.是的,就是超市行业的.当初我借书的目的是为了学习XML的结构,属性,标签等.所以看那本书根本看不懂,因为那本书讲述的并不是XML的格式教程,而是讲述超市行业中传输数据是使用XML格式来传输的,讲述了其传输的XML的各个标签的意义等.(我借错书了.)
我的理解XML是一种数据格式,是一种存储数据的格式,是一种载体.而各个行业使用XML,但是各个行业的XML的标签,便签属性是不一样的.相当于使用PHP技术可以做一个行业网站,但是各行业的网站的内容是不一样的(使用技术是一样的). 我也可以定义自己的标签,如果全世界都用你的标签,那你的标签可以成为标准了
3.XML的使用
structSTTest
{
std::vector<int>m_vectorInt;
std::list<double>m_listDouble;
};
structSTGood
{
STTestm_stTest[10];
};
@H_959_403@<structure_def> <struct name = "STTest"> <member type = "std::vector<int>" name = "m_vectorInt"> <value>0</value> <value>1</value> <value>2</value> <value>3</value> <value>4</value> </member> <member type = "std::list<double>" name = "m_listDouble"> <value>0.1</value> <value>1.1</value> <value>2.1</value> <value>3.1</value> <value>4.1</value> <value>5.1</value> </member> </struct> <struct name = "STGood"> <member type = "STTest" name = "m_stTest"> </member> </struct> </structure_def>@H_977_404@这里就很好的反映了数据结构的层次关系了 . 不过使用代码去解析这个数据结构也是有点痛苦的 .XML 的层次结构变了 , 代码还是需要修改的 .