假设我有一个XML
<xml>
<lang>en</lang>
<en>
<text id="123">One Two Three</text>
<text id="hello">Hello</text>
</en>
</xml>
只有当lang值为“en”时,“en”标签才会出现。 如果lang的值是“de”
<lang>de</lang>
<de>
<text id="123">One Two Three</text>
<text id="hello">Hello</text>
</de>
如何在我的动作3代码中获得此名称dinamicaly。
假设我想使用
var xmlVal = new XML(... the above xml)
var lang = xmlVal.lang;
我不能使用if(xmlVal.lang ==“en”)..因为lang值可以是任何字符串。但是该名称中应该有一个子节点.. !!
如何从节点“en或de或者什么......”获取值?“
答案 0 :(得分:2)
尚未经过测试,但这应该为您提供一般性的想法(您可以使用“密钥”动态选择):
var xmlVal:XML = new XML(... the above xml);
var type:String = xmlVal.lang;
var result:XML = xmlVal[type];
答案 1 :(得分:0)
尝试使用:
var lang:String = xmlVal.lang;
var strings:XMLList = xmlVal.elements(lang).text;
答案 2 :(得分:0)
这是一种更具扩展性和一致性的方法。
var xmlVal:XML = XML( /*above*/ );
// xmlVal.child("lang"); is a long-hand for xmlVal.lang, but more explicit
// it can also save you headache later in some corner cases.
var langs:XMLList = xmlVal.child("lang");
// if there is only one lang child, this will grab its' child text
// use toString to make sure you only grab the string pieces.
var langVal:String = langs[0].text().toString().replace(/\s/g, "");
var langValue:XMLList = xmlVal.child(langVal);
但是,如果你可以改变它,那你就更好了:
...
<lang>en</lang>
<en>
到
...
<lang abbreviation="en"><text id="123">One Two Three</text>
<text id="hello">Hello</text></lang>
然后你可以打电话:
var xmlVal:XML = XML( /*above*/ );
var finalList:XMLList = xmlVal.child( "lang" ).( @abbreviation == "en" );