|
本帖最后由 胡秀伟 于 2012-4-13 21:52 编辑
2.2 XML 标准配置文件
在 FlightGear 系统中使用的 XML 文件以声明<?xml version=" 1.0"?>开头,此行之前不能有空行或字符,根元素为 PropertyList,其数据形成一个树形层次的结构。标准配置格式如下:
<?xml version="1.0"?>
<PropertyList>
<orientation>
<heading-deg type="double">0.0</ heading-deg >
<pitch-deg type="double">0.0</ pitch-deg >
<roll-deg type="double">0.0</ roll-deg >
</ orientation >
</PropertyList>
其中,PropertyList 是根元其中,PropertyList 是根元素,它存在一个子元素 orientation,即方向属性,方向属性自身有三个子元素 heading-deg,pitch-deg 和 roll-deg,表示直升机的航向角、俯仰角和滚转角,
type="double"表示值为“双精度”型实数,三个方向的值都设置为 0.0。
3 XML 配置文件的解析
对 XML 文档的解析以及参数的管理,需要建立树状的数据结构,各元素的属性值作为属性树的一个节点,节点之间形成父子、兄弟关系。在解析文档时,根元素对应属性树的根节点,每读取一个元素,就生成一个节点,遇到子元素,就生成逻辑上的子节点与之对应。对节点操作,首先需要遍历 XML 属性树,查找到相应的节点,然后进行读取属性、修改、删除、保存等操作。如下例。
< PropertyList >
<startup>
<width type="int">100</ width >
<height type="int">50</ height >
</startup>
<hud>
<path> Huds/default.xml</path>
<y-offset>190</y-offset>
</ hud>
< /PropertyList >
XML 示例说明如下:
(1) 读取起始标签< PropertyList >,生成根节点 PropertyList。
(2) 读取标签< startup >,生成节点 startup,作为根节点的第一个子节点。
(3) 读取标签< width >,生成节点 width,作为 startup 节点的子节点。读取该节点标签属性 type,记录其属性为 int。读取 width 节点的值为 100,数据类型为 int 型。
(4) 遇到结束标签< /width >,返回到节点 startup 处,读取标签< height >,生成 height 节点,作为 startup 节点的子节点。
(5) 遇到结束标签< /startup >,返回根节点 PropertyList 处。
(6) 读取标签< hud >,生成 hud 节点,作为 PropertyList 根节点的第二个子节点。
(7) 分别读取标签< path >和< y-offset >,生成 path 节点和 y-offset 节点作为 hud 节点的两
个子节点。遇到结束标签时,返回 hud 节点处。
(8) 遇到结束标签< /PropertyList >,完成整个文档的解析。经过以上步骤的解析,最终将
生成如下图所示的属性树。
|
|