一、定义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"/>;
四、XML Replace
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);
}