FLEX XML相关
一、定义XML的时候,尽量不要使用变的东西做为标签名。否则很不好解析。
例好:
?
<group name="PropertyA">
<Item id="a5001" value="2"/>
<Item id="a263" value="2012-05-14"/>
<Item id="a24001" value=""/>
<Item id="a13001" value=""/>
<Item id="a35048" value=""/>
<Item id="a35047" value=""/>
<Item id="a33001" value=""/>
</group>
?
?
就比
?
? ? ? ? ? ? ? <PropertyA>
? ? ? ? ? ? ? ? <a5001>2</a5001>
? ? ? ? ? ? ? ? <a263>2012-05-14</a263>
? ? ? ? ? ? ? ? <a24001/>
? ? ? ? ? ? ? ? <a13001>sda</a13001>
? ? ? ? ? ? ? ? <a35048>sdfad</a35048>
? ? ? ? ? ? ? ? <a35047>dsfad</a35047>
? ? ? ? ? ? ? ? <a33001>sdfasdfd</a33001>
? ? ? ? ? ? ? </PropertyA>
好解析很多
?
二、如果不清楚底下子标签的名字,可采用 * 的写法
?
如:
?
<Property id="a77001" displayName="Customer Grade" type="ComboBox" defaultValue="" nullable="true" editable="true" multipleChoice="false" comments="Customer Grade" groupDesc="PropertyB" visible="true">
<Item text="M-Comm" value="3"/>
<Item text="VIP" value="1"/>
<Item text="VVIP" value="2"/>
</Property>
?
可采用?var items:XMLList=property.*; 然后遍历
?
for each (var item:XML in items)
{
var data:Object={};
?
data["label"]=item.@["text"].toString();
data["value"]=item.@["value"].toString();
}
?
?
?
三、在XML中使用占位符
?
if (groupName)
{
tempXml= <group name={groupName}/>;
}
如果groupName = 'PropertyA'
那么tempXml = <group name = "PropertyA"/>;
?
四、XMLReplace ?
?
? ?var result:XML = new XML(globalXML.toXMLString()); ?//相当于复制XML
? ?result.replace("value",valueResult);
? ?return result;
会把XML中value节点给全部替换成 ?valueResult ?XML
?
valueResult.appendChild(tempXml);
向XML中插入孩子 即使用?valueResult = <value/>开式
?
插入后变马 <value>?tempXml中的xml?</value>
?
五、xml判断一个节点是否存在。
? ?判断属性是否存在可用自带的function hasOwnProperty(p:String):Boolean
?
? 如果判断一个节点是否存在,可用:
? ? ?//判断一下有无value节点,如果有则替换,如无,则插入
? ?var valueList:XMLList = result.value;
? ? ?if(valueList && valueList.length() != 0 )
? ?{
? ? ? ?result.replace("value",valueResult);
? ?}
? ?else
? ?{?
? ? ? ?result.appendChild(valueResult);
? ? ?}?
? ??