因为flex与后台采用xml交互,所以对xml的解析就很重要。
幸好flex提供了一种比价好的取值、过滤、修改xml的工具e4x。
如下一段xml
<?xml version='1.0' encoding='UTF-8'?>
<inSight>
<myrepository id='仓库视图' childName='2'>
<repository id='1号仓库' childName='4'>
<area id='A区' rAhNum='4' position='1,01,4'>
<shelf id='6' name='01架' floorNum='2' position='1,01,1'>
<floor id='A层' lineNum='2'>
<rb id='32' name='A层01列' pNum='541' r_pro='0xff0000' w_pro='0x00ff00' />
<rb id='34' name='A层02列' pNum='454' r_pro='0x00ff00' w_pro='0x00ff00' />
</floor>
<floor id='B层' lineNum='2'>
<rb id='33' name='B层01列' pNum='5442' r_pro='0xff0000' w_pro='0xffff00' />
<rb id='35' name='B层02列' pNum='54' r_pro='0x00ff00' w_pro='0x00ff00' />
</floor>
</shelf>
</area>
</repository>
</myrepository>
</inSight>
(1)取值:获取第二个floor节点
xml.myrepository.shelf.floor[1]的值为:
<floor id='B层' lineNum='2'>
<rb id='33' name='B层01列' pNum='5442' r_pro='0xff0000' w_pro='0xffff00' />
<rb id='35' name='B层02列' pNum='54' r_pro='0x00ff00' w_pro='0x00ff00' />
</floor>
第一:不管根节点 第二 如果有多个重复的元素,则当做数组,用[] 取值,从0开始。
(2)取某个元素节点的属性值:去第一个floor的id值
xml.repository.shelf.floor.@id:
取属性值用到@符号。
(3)过滤:取id为 ‘B层’floor元素。
xml..floor.(@id=="B层")
第一 ..两个.号,表示不按层级走,任意的搜索。 第二 过滤条件要用()。
(4)过滤2 去id 为 ‘B层’的floor元素下的第一个rb节点的id值
xml..floor.(@id=="B层").rb.@id