因爲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