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中保存怎么做.
struct STTest
{
std::vector<int> m_vectorInt;
std::list<double> m_listDouble;
};
struct STGood
{
STTest m_stTest[10];
};
Ini很难把数据结构的层次关系描述出来, 你必须通过代码实现, 而且你的解析代码还要跟着ini走, ini一但需要变化, 你的代码就要跟着变, 当到遇上一些复杂的结构时就更复杂了.(因为我做个这样的笨事情!!!!!!!!!!!!!!!!!!!!!!!).
2. XML
XML的格式就是一个树结构, 其标签--属性--值的属性可以很好的描述数据结构, 甚至可以把变量名也描述出来, 可以序列化一个对象, 可以记录传输数据表的记录等等).
记得刚刚接触XML的时候, 自己借了一本超市行业的XML的书. 是的, 就是超市行业的. 当初我借书的目的是为了学习XML的结构, 属性, 标签等. 所以看那本书根本看不懂, 因为那本书讲述的并不是XML的格式教程, 而是讲述超市行业中传输数据是使用XML格式来传输的, 讲述了其传输的XML的各个标签的意义等.(我借错书了.)
我的理解 XML是一种数据格式, 是一种存储数据的格式, 是一种载体. 而各个行业使用XML, 但是各个行业的XML的标签, 便签属性是不一样的. 相当于使用php技术可以做一个行业网站, 但是各行业的网站的内容是不一样的(使用技术是一样的).
我也可以定义自己的标签, 如果全世界都用你的标签, 那你的标签可以成为标准了
3. XML的使用
struct STTest
{
std::vector<int> m_vectorInt;
std::list<double> m_listDouble;
};
struct STGood
{
STTest m_stTest[10];
};
<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>
这里就很好的反映了数据结构的层次关系了. 不过使用代码去解析这个数据结构也是有点痛苦的. XML的层次结构变了, 代码还是需要修改的.